Preg_replace 至 Preg_replace 全部
Preg_replace to Preg_replace All
有人好心地帮我解决了一个非常具体的用途的正则表达式,但我现在唯一的问题是正则表达式只替换了 one 匹配实例,并非所有 匹配 (这是目标)。
我想要 <SPAN>
的每个 实例与 "stylish-blue-button" class 在这里找到:
<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 ></span>', trim(strip_tags($string)));
现在这很管用而且很棒,但它只替换了一个实例。
问题:我是否必须彻底 alter/change 我的方法才能做到这一点,或者它会是一个小的修改吗?
非常感谢。
尝试函数 preg_match_all (http://php.net/preg_match_all)。我希望就这么简单。
$regex = '~\[(data-user="\d+")\s+(data-userId="\d+")\]\s*(.+?)\s*\[\/\]\s*(.*)~is';
while (preg_match($regex, $string)) {
$string = preg_replace($regex, "<span ></span>", trim(strip_tags($string)));
}
echo $string;
有人好心地帮我解决了一个非常具体的用途的正则表达式,但我现在唯一的问题是正则表达式只替换了 one 匹配实例,并非所有 匹配 (这是目标)。
我想要 <SPAN>
的每个 实例与 "stylish-blue-button" class 在这里找到:
<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 ></span>', trim(strip_tags($string)));
现在这很管用而且很棒,但它只替换了一个实例。
问题:我是否必须彻底 alter/change 我的方法才能做到这一点,或者它会是一个小的修改吗?
非常感谢。
尝试函数 preg_match_all (http://php.net/preg_match_all)。我希望就这么简单。
$regex = '~\[(data-user="\d+")\s+(data-userId="\d+")\]\s*(.+?)\s*\[\/\]\s*(.*)~is';
while (preg_match($regex, $string)) {
$string = preg_replace($regex, "<span ></span>", trim(strip_tags($string)));
}
echo $string;