首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Regex查找未被BBcode包围的字符串

使用Regex查找未被BBcode包围的字符串
EN

Stack Overflow用户
提问于 2011-09-12 14:26:24
回答 1查看 256关注 0票数 0

我需要一个正则表达式,该表达式只有在url BBcode中才能找到和替换字符串中的单词/短语。

代码语言:javascript
复制
$string = "Word [url='http://domain.com']Word test[/url]";

regex不应该使用"Word test“来做任何事情,而只是"Word”的第一次出现。

编辑:更具体地说,这是一个论坛软件的一个插件,该软件用于监测提到艺术家的消息。如果出现这种情况,艺术家的名字将被一个关于该艺术家的线程的URL替换,除非它还不是URL的一部分(要么在链接本身中,要么在desc中)。经过再三考虑,如果它用于任何非纯标记(b、i、u、颜色、列表等),则不应该触发它。因此,一种简单的方法来定义哪些标签可以被替换将是辉煌的!

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-12 14:50:19

代码语言:javascript
复制
$inputStr = "Coldplay [URL='localhost/threads/coldplay-paradise.32/']Coldplay - \"Paradise\"[/URL] Coldplay";

function replace( $matches ) {
    if( isset( $matches[2] ) && $matches[2] )
        return "[url='coldplay']".$matches[2]."[/url]";
    return $matches[0];
}

$regex = '/(\[.*?\].*?\[\/.*?\])?(Coldplay)?(.+?)?/si';
$outputStr = preg_replace_callback( $regex, 'replace', $inputStr );
echo $outputStr;

结果:

代码语言:javascript
复制
[url='coldplay']Coldplay[/url][URL='localhost/threads/coldplay-paradise.32/']Coldplay - "Paradise"[/URL] [url='coldplay']Coldplay[/url]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7389430

复制
相关文章

相似问题

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