我想将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
。
我做错了什么?
答案 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
?>