我遇到了一个简单的问题,经过很长一段时间试图找出问题,我发现str_replace不能用简单的引号。这是我的代码:
<?php
$replaceNL1=str_replace("\n", "NEWLINE", $_POST['txt']);
echo $replaceNL1;
$replaceNL2=str_replace('\n', 'NEWLINE', $_POST['txt']);
echo '<hr>' . $replaceNL2;
?>
仅$replaceNL2
进行替换。在第一个变量上,它就像没有任何str_replace()
一样。这从未发生在我身上。
我使用的是UTF-8字符集。
答案 0 :(得分:6)
单引号和双引号在PHP中是不同的。
单引号
指定字符串的最简单方法是将其用单引号括起来 (角色')。
要指定文字单引号,请使用反斜杠()对其进行转义。至 指定一个文字反斜杠,加倍(\)。 所有其他实例 反斜杠将被视为字面反斜杠:这意味着 您可能习惯的其他转义序列,例如\ r或\ n,将是 按字面意思输出而不是具有任何特殊含义。
所以"\n"
是换行符,而'\n'
是两个字符(文字\n
),没有特殊含义。
答案 1 :(得分:3)
"\n" - String that contains newline character
'\n' - String that contains two characters, a backslash \ and the letter n
所以你刚刚在php中发现了单引号和双引号之间的区别。