我正在尝试从论坛上过时的mod中替换文本。旧代码看起来像这样
[ame="http://www.youtube.com/watch?v=wYJ20INbM7Q"]YouTube - ‪Bill O'Reilly Interviews Rapper Lupe Fiasco - 06/20/11‬‏[/ame]
我希望新代码看起来像这样:
[video=youtube;wYJ20INbM7Q]http://www.youtube.com/watch?v=wYJ20INbM7Q[/video]YouTube - Bill O'Reilly Interviews Rapper Lupe Fiasco - 06/20/11[/video]
我用过:
$text = preg_replace('[ame="http://www.youtube.com/watch?v="([a-z0-9]+)\"],
([video=youtube;$2]http://www.youtube.com/watch?v=$2[/video])', $text);
错误:警告:preg_replace()
任何帮助表示感谢。
答案 0 :(得分:1)
您在参数列表
中的第一个逗号之前和之后缺少引号$text = preg_replace('|\[ame="http://www.youtube.com/watch\?v=([a-z0-9]+)"\]|i', '[video=youtube;$1]http://www.youtube.com/watch?v=$1[/video]', $text);
此外,您的正则表达式有许多语法错误:
|
)i
修饰符才能使您的匹配不区分大小写答案 1 :(得分:1)
此外,您的代码将无法满足您的需求。请改用它们。
$regEx = '#\[ame\=".*?\=([a-zA-Z0-9]*?)"]#';
$replacement = "([video=youtube;$1]http://www.youtube.com/watch?v=$1[/video])";
$text = preg_replace($regEx, $replacement, $text);