将正则表达式转换为PHP

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)

Tot*_*oto 5

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)