首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Preg_replace到Preg_replace All

Preg_replace到Preg_replace All
EN

Stack Overflow用户
提问于 2015-10-27 06:30:04
回答 2查看 7.2K关注 0票数 3

有人帮助我做了一个非常具体的正则表达式,但我现在唯一的问题是,regex只替换了匹配的一个实例,而不是所有的匹配(这就是目标)。

我希望使用“时髦的蓝色按钮”类的 <SPAN>的每个实例在这里找到:

代码语言:javascript
复制
<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...

变成这样:

代码语言:javascript
复制
[data-user="12345" data-userId="678910"]John Smith[/] ...Blablabla some other text...

为此,向我提供了以下preg_replace:

代码语言:javascript
复制
preg_replace('~\[(data-user="\d+")\h+(data-userId="\d+")\]\s*(.+?)\s*\[/\]\s*(.*)~s', '<span $1 $2>$3</span>$4', trim(strip_tags($string)));

这很好,但是它只替换了一个实例。

问题:为了实现这个目的,我需要彻底改变/改变我的方法吗?还是做一个小的修改?

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-27 06:46:37

代码语言:javascript
复制
$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;
票数 2
EN

Stack Overflow用户

发布于 2015-10-27 06:35:11

尝试函数preg_match_all (all)。我希望就这么简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33361257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档