php - Preg_replace 到 Preg_replace All

标签 php regex preg-replace markdown

有人好心地帮我解决了一个非常具体的用途的正则表达式,但我现在唯一的问题是正则表达式只替换了匹配的一个实例,而不是所有匹配(这是目标)。

我想要 <SPAN>每个实例在此处找到“stylish-blue-button”类:

<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)));

现在这有效而且很棒,但它只替换了一个实例。

问题:我是否必须彻底改变/改变我的方法才能做到这一点,或者它会是一个小的修改吗?

非常感谢。

最佳答案

$regex = '~\[(data-user="\d+")\s+(data-userId="\d+")\]\s*(.+?)\s*\[\/\]\s*(.*)~is';

while (preg_match($regex, $string)) {
    $string = preg_replace($regex, "&lt;span $1 $2&gt;$3&lt;/span&gt;$4", trim(strip_tags($string)));
}

echo $string;

关于php - Preg_replace 到 Preg_replace All,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361257/

相关文章:

php - Ajax 请求 mysql

php - 对分页的一些误解

php - 开发人员的模型工具 : balsamiq sketchflow

php - 将 php 项目从 fedora 移动到 windows wamp 错误

javascript - javascript正则表达式用连字符替换空格

php - 如果图像 'alt' 属性为空,如何替换它?

php - preg_replace,选择前后的点

PHP 使用重叠的正则表达式替换字符串

java - 需要正则表达式帮助 - 如何使用正则表达式提取字符串?

PHP文字转表情