1

我正在创建一个 PHP 类,它可以将字符串数组写入文件,然后逐行读取。

我需要确保像 '\n' 这样的特殊字符按字面意思写入文件,而不是弄乱文件的格式。这似乎只在使用单引号字符串时才有效。

<?php
//EXAMPLE ONE - DOUBLE QUOTES ----------
$user_input = "This is the \n input.";
file_put_contents("input.txt", $user_input);
//OUTPUT
//
//This is the
// input.
//

//EXAMPLE TWO - SINGLE QUOTES ----------
$user_input = 'This is the \n input.';
file_put_contents("input.txt", $user_input);
//OUTPUT
//
//This is the \n input.
//
?>

即使 $user_input 在双引号中,如何实现示例二的输出?

4

5 回答 5

2

使用双引号时,反斜杠\字符会启用特殊用法,例如\n换行符(在文本内)。

要在文本中使用实际的反斜杠,需要添加两个:

$user_input = "This is the \\n input.";

有关反斜杠用法的更多信息,请查看文档

于 2013-01-15T10:07:35.323 回答
1

不!你不能那样做。

手册

如果字符串用双引号 (") 括起来,PHP 将为特殊字符解释更多的转义序列。

您需要使用另一种方法,例如添加双斜杠。

str_replace('\', '\\', $user_input);

这将转义所有特殊字符。现在,如果有双引号,那么它将按照您需要的方式显示。

或者,您也可以这样做......打印输出时,您可以通过这种方式将特殊字符转义为它们的字符:

str_replace(array("\n", "\t"), array('\n', '\t'), $user_input);
于 2013-01-15T10:08:10.680 回答
1

这是因为 \n 在这里被视为换行符,所以你转义了这个字符。将其更改为 \\n

str_replace("\n","\\n", $user_input);
于 2013-01-15T10:09:15.870 回答
0

正确答案如下:

$user_input = str_replace (array("\n","\r"), " ", $user_input);

它用一个似乎最方便替换的空格替换换行符(但可能会根据字符串的未来用途进行更改。比如说,如果你要在 HTML 中打印它,'<br>'会是更好的替换)

尽管引号与它无关。它们只是PHP 语法的一部分,在用户输入中没有任何特殊含义

于 2013-01-15T10:16:29.810 回答
0
$user_input = "This is the \n input."

您必须使用\任何特殊字符。如果你想打印text is 'abcd' here 所以你必须写\'abcd\'来打印这个。

于 2014-08-16T12:05:36.833 回答