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

Mik*_*ike 2 php regex preg-replace preg-replace-callback preg-match

我得到以下字符串:

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

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

$PC_File = preg_replace_callback("(?=\#\$\#\#).*?(?<=\#\#\$\#)", 'codeParser', $PC_File);
Run Code Online (Sandbox Code Playgroud)

但得到这个错误:

PHP Warning:  preg_replace_callback() : Unknown modifier '.'
Run Code Online (Sandbox Code Playgroud)

Exp*_*lls 7

您需要将正则表达式包装在分隔符中.它正在考虑()立即成为分隔符,并.作为修饰符(当然无效).

"/(?=#\\$##).*?(?<=##\\$#)/"
Run Code Online (Sandbox Code Playgroud)

(我也很确定#除非你用它们作为分隔符,否则不需要转义)

编辑:你需要\\正确地逃避$双引号.