-1

我在一件简单的事情上遇到了麻烦,经过很长时间试图找出问题后,我意识到 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 字符集。

4

2 回答 2

6

单引号和双引号在 PHP 中是不同的东西。

PHP 字符串

单引号

指定字符串的最简单方法是将其括在单引号中(字符 ')。

要指定文字单引号,请使用反斜杠 () 对其进行转义。要指定文字反斜杠,请将其加倍 (\)。所有其他反斜杠实例都将被视为文字反斜杠:这意味着您可能习惯使用的其他转义序列,例如 \r 或 \n,将按照指定的字面意思输出,而不是具有任何特殊含义

"\n"换行符也是如此,而'\n'两个字符(字面\n意思)是没有特殊含义的。

于 2012-10-28T09:39:39.157 回答
3
"\n" - String that contains newline character
'\n' - String that contains two characters, a backslash \ and the letter n

所以你刚刚发现了 php.ini 中单引号和双引号的区别。

于 2012-10-28T09:39:54.863 回答