我很难将这个函数移植到PHP。
SomeString.replace(/([.*+?^=!:${}()|'[']'/''])/g, "''$1");
老实说,我甚至不知道它到底是干什么的。我尝试至少将表达式与preg_replace
一起使用但得到
preg_match():编译失败:在偏移量25 处缺少字符类的终止]
当使用类似的东西时
preg_match('/([.*+?^=!:${}()|''['']''/''])/', $string, $matches);
javascript函数.replace
由preg_replace
在php中翻译,因此:
SomeString.replace(/([.*+?^=!:${}()|'[']'/''])/g, "''$1");
变为:
$SomeString = preg_replace('~([.*+?^=!:${}()|'[']/''''])~', "''''$1", $SomeString);
这将单独替换字符类中已转义的特殊字符。
除此之外,您遇到的错误是由于角色在尝试使用preg_match时使用了双转义符,因此必须使用双转义符。
preg_match('/([.*+?^=!:${}()|'[']'/''''])/', $string, $matches);
// | ^^^^^ double-double escape the backslash
// ^ no needs to double escape here
您可以使用:
preg_match('#([.*+?^=!:${}()|'[']/''''])#', $string, $matches);
您的错误是在正则表达式中使用了''
而不是''''
。匹配反斜杠需要双转义。一个用于PHP的''
和另一个用于PCRE引擎的''
。