Max*_*ens 0 javascript php regex replace preg-replace
我正在努力将此函数移植到PHP.
SomeString.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
Run Code Online (Sandbox Code Playgroud)
说实话,我甚至不知道它究竟是做什么的.我尝试使用至少表达式preg_replace
但得到了
对于偏移量为25的字符类,preg_match():编译失败:缺少终止]
当使用类似的东西时
preg_match('/([.*+?^=!:${}()|\\[\\]\\/\\])/', $string, $matches);
Run Code Online (Sandbox Code Playgroud)
javascript函数.replace在php中翻译preg_replace,所以:
SomeString.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
Run Code Online (Sandbox Code Playgroud)
变为:
$SomeString = preg_replace('~([.*+?^=!:${}()|\[\]/\\\\])~', "\\\\$1", $SomeString);
Run Code Online (Sandbox Code Playgroud)
这将自行替换角色类中的特殊字符,但会进行转义.
除此之外,您遇到的错误是由于您尝试使用preg_match时角色的双重逃逸,您必须双重转义.
preg_match('/([.*+?^=!:${}()|\[\]\/\\\\])/', $string, $matches);
// | ^^^^^ double-double escape the backslash
// ^ no needs to double escape here
Run Code Online (Sandbox Code Playgroud)