正则表达式错误preg_replace_callback():未知的修饰符'。'在

时间:2013-04-01 15:52:01

标签: php regex preg-replace preg-match preg-replace-callback

我收到了以下字符串:

last_name, first_name
bjorge, philip
kardashian, [kghim]
mer#$##Code:menu:51587daa7030e##$#cury some more
data #$##Code:menu:515r4387daa7dsf030e##$#, freddie

我试图用函数替换中间的代码:'codeParser'正则表达式是:

$PC_File = preg_replace_callback("(?=\#\$\#\#).*?(?<=\#\#\$\#)", 'codeParser', $PC_File);

但收到此错误:

PHP Warning:  preg_replace_callback() : Unknown modifier '.'

1 个答案:

答案 0 :(得分:7)

您需要将正则表达式包装在delimiters中。它正在考虑()现在是分隔符,.作为修饰符(当然无效)。

"/(?=#\\$##).*?(?<=##\\$#)/"

(我也非常确定#不需要转义,除非您将它们用作分隔符)

编辑:您需要\\才能正确转义双引号中的$