PHP,Regex-如何使用preg_replace进行转义


PHP, Regex - How to escape with preg_replace?

我想用''n替换'n,用''a替换'a,依此类推…

这是我的正则表达式:

图案:

([''])

应替换为:

$1$1

因此,如果输入字符串是'n,它将被替换为'n。(我在http://www.regexe.com/成功了(

然后我有了这个PHP代码:

preg_replace('/([''])/', '$1$1', "'n a");

并认为它会输出,但我得到了这个错误:

Warning:  preg_replace(): Compilation failed: missing terminating ] for character class at offset 5

所以我逃离了[

现在我的代码是

  preg_replace('/('[''])/','$1$1',"'n a");

但是。。。。这并不能像我想要的那样工作,因为现在它并没有用''n取代'n

我做错了什么?

您不需要使用preg_replace,您可以使用str_replace,因为您不匹配模式。您需要将主题字符串放在单引号中,否则'n将被视为换行符的转义序列。

str_replace('''', '''''', ''n a');

请参阅PHP中单引号和双引号字符串之间的区别是什么?

取另一个分隔符并添加一个反斜杠:

<?php
echo preg_replace('~(['''])~', '$1$1', ''n a');
// output: ''n a
?>