只有当有一个[URL]标签时,Regex模式才有效


Regex Pattern Works only if there is One [URL] Tag

我使用以下正则表达式模式从[URL=http://www.google.com]Google[/URL]

获取值
$pattern = '/'['s*URL(.+?)?'s*'](.+?)'['s*'/URL's*']/i';

它工作得很好,但只有当只有一个[URL]...[/URL]。如果有一个字符串有多个[URL]....[/URL],它给出错误的值

例如下面的字符串

$string = '[URL=http://www.google.com]Google[/URL] another website [URL]www.youtube.com[/URL]';

它将第一个匹配输出为]http://www.freshupnow.com[/URL,并留下其余的URL标记。我已经尝试了很多找到问题在我的正则表达式模式,但失败了。有人知道吗?

您的URL搜索按预期工作,也就是说,如果您列出的/URL不正确,或者您匹配的模式与您给我们的不同。

$pattern = '/'['s*URL(.+?)?'s*'](.+?)'['s*'/URL's*']/i';

([URL=http://www.google.com]Google[/URL] another website [URL)
(]www.freshupnow.com)
([/URL])

为上面的RegEX。

如果你想让它不跳出系统,你可以稍微改变你的RegEx

$pattern = '/'['s*URL([^']]+?)?'s*'](.+?)'['s*'/URL's*']/i';

这将防止它在执行模式表达式时跳出[]。