我使用以下正则表达式模式从[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';
这将防止它在执行模式表达式时跳出[]。