PHP,Regex - 如何使用preg_replace转义\ n?

时间:2016-02-19 22:00:49

标签: php regex escaping

我想将ff替换为\n,将\\n替换为\a,依此类推......

所以这是我的正则表达式:

模式:

\\a

应替换为:

([\\])

因此,如果输入字符串为$1$1 ,则将替换为\n。 (我已经在http://www.regexe.com/进行了测试,但它确实有效)

然后我有了这个PHP代码:

\n

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

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

我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

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

请参阅What is the difference between single-quoted and double-quoted strings in PHP?

答案 1 :(得分:1)

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

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