我正在创建一个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是双引号,我怎样才能实现示例2的输出?
答案 0 :(得分:2)
使用双引号时,反斜杠\
字符可以使用特殊用法,例如\n
是换行符(在文本中)。
要在文本中获得实际反斜杠,请使用添加两个:
$user_input = "This is the \\n input.";
有关反斜杠用法的更多信息,请查看documentation。
答案 1 :(得分:1)
来自manual:
如果字符串用双引号(“)括起来,PHP将解释更多特殊字符的转义序列。
您需要使用其他方法,例如添加双斜杠。
str_replace('\', '\\', $user_input);
这将逃脱所有特殊字符。现在,如果有双引号,那么它将显示,就像你需要的那样。
或者,您也可以这样做...打印输出时,您可以通过这种方式将特殊字符转义为字符:
str_replace(array("\n", "\t"), array('\n', '\t'), $user_input);
答案 2 :(得分:1)
这是因为\ n正在考虑作为新行字符,所以你逃脱了角色。将其更改为\\ n
str_replace("\n","\\n", $user_input);
答案 3 :(得分:0)
正确答案如下:
$user_input = str_replace (array("\n","\r"), " ", $user_input);
它用一个似乎最方便替换的空格替换换行符(但可以根据字符串的未来用途进行更改。比方说,如果你打算用HTML打印它,'<br>'
会更好更换)
答案 4 :(得分:0)
$user_input = "This is the \n input."
您必须将\
用于任何特殊字符。如果要打印text is 'abcd' here
所以你必须写\'abcd\'
来打印这个。