以下功能
function stripbbtags ($string) {
$pattern = "/\[([^\]]+?)(=[^\]]+?)?\](.+?)\[/\1\]/";
$replace = "";
return preg_replace($pattern, $replace, $string);
}
返回错误:
Unknown modifier
有一些神秘的角色,在Notepad ++中看起来像SOH但是有黑色背景。真的很奇怪。
答案 0 :(得分:2)
这个怎么样:
function stripbbtags ($string) {
$pattern = "#\[([^\]]+?)(=[^\]]+?)?\](.+?)\[/\1\]#";
$replace = "";
return preg_replace($pattern, $replace, $string);
}
错误信息有点神秘,但实际上会给你一些见解,如果看一下preg_replace
的文档,你会发现它们会谈论修饰符。这些修饰符用于将选项传递给PCRE库,即做一些不区分大小写的匹配,字符串是unicode等。
问题依赖于您用作分隔符的字符;您正在使用/
并且正则表达式包含斜杠,因此PCRE认为\1\]/
是您的修饰符。将分隔符更改为#
可解决问题。
答案 1 :(得分:0)
好吧,你的分隔符是/
,而你的结束分隔符是字符串\1\]/
,但\1
和其他字符都不是有效的修饰符。
选择一个不同的分隔符,或者只是在表达式中转义所有出现的分隔符。