有人帮助我做了一个非常具体的正则表达式,但我现在唯一的问题是,regex只替换了匹配的一个实例,而不是所有的匹配(这就是目标)。
我希望使用“时髦的蓝色按钮”类的 <SPAN>的每个实例在这里找到:
<span class="stylish-blue-button">
<span style="display:none;">[data-user="12345" data-userId="678910"]</span>
John Smith
<span style="display:none;">[/]</span>
</span>
...Blablabla some other text...变成这样:
[data-user="12345" data-userId="678910"]John Smith[/] ...Blablabla some other text...为此,向我提供了以下preg_replace:
preg_replace('~\[(data-user="\d+")\h+(data-userId="\d+")\]\s*(.+?)\s*\[/\]\s*(.*)~s', '<span $1 $2>$3</span>$4', trim(strip_tags($string)));这很好,但是它只替换了一个实例。
问题:为了实现这个目的,我需要彻底改变/改变我的方法吗?还是做一个小的修改?
非常感谢。
发布于 2015-10-27 06:46:37
$regex = '~\[(data-user="\d+")\s+(data-userId="\d+")\]\s*(.+?)\s*\[\/\]\s*(.*)~is';
while (preg_match($regex, $string)) {
$string = preg_replace($regex, "<span $1 $2>$3</span>$4", trim(strip_tags($string)));
}
echo $string;发布于 2015-10-27 06:35:11
尝试函数preg_match_all (all)。我希望就这么简单。
https://stackoverflow.com/questions/33361257
复制相似问题