用这个BBCode替换那个BBCode

3
基本上,我正在尝试将xenforo的论坛脚本数据库转换到我的自定义数据库中(放弃我对xenforo的使用),他们的bbcode让我感到很烦恼。
我正在尝试使用以下方法将所有url bbcode从他们的网址更改为我的网址:
$message = preg_replace("/\[url\=\'(.+?)\'\](.+?)\[\/url\]/is",
                        "[url=$1]$2[/url]", $message);

基本上,它们在 URL 前后都有单引号,而我不想要它们,但我的代码不起作用。


请提供一个输入示例。 - Olaf Dietsche
1个回答

1

如果您在正则表达式字符串中使用双引号,则必须进行双重转义,因为PHP也会解释反斜杠

$message = preg_replace("/\\[url='(.+?)'\\](.+?)\\[\\/url\\]/is",
                        "[url=$1]$2[/url]", $message);

测试用例

<?php
$message = "[url='http://www.example.com/test']My test URL[/url]";
$message = preg_replace("/\\[url='(.+?)'\\](.+?)\\[\\/url\\]/is",
                        "[url=$1]$2[/url]", $message);
echo "$message\n";

以及它的输出

[url=http://www.example.com/test]我的测试URL[/url]

该测试在Ubuntu 12.04上进行,并使用PHP 5.3.10。


那不起作用 解析错误:语法错误,在/home/gamingon/public_html/prxa.info/xenforo_convert.php的第65行意外出现'(' - NaughtySquid
@LiamDawe 请查看更新后的答案。因此,错误一定出现在其他地方。 - Olaf Dietsche
当有多个时,这样做是否有效?也许这就是我的问题所在。 - NaughtySquid
@LiamDawe 这个示例测试用例不起作用吗?还是它在你的环境中不起作用? - Olaf Dietsche
我找到了问题,这个方法可行,抱歉打扰你了 :) - NaughtySquid
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接