用这个bbcode替换这个bbcode

时间:2012-11-28 10:33:30

标签: php regex

基本上我正在尝试将xenforo的论坛脚本数据库转换为我的自定义脚本数据库(放弃我在xenforo上的使用),他们的bbcode让我烦恼。

我正在尝试将所有url bbcode从他们的更改为我的:

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

基本上他们在我不想要的网址周围有单引号,但我的代码不起作用。

1 个答案:

答案 0 :(得分:1)

如果对regexp字符串使用双引号,则必须双重转义,因为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]

测试在Ubuntu 12.04和PHP 5.3.10上完成。