我正在创建一个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在双引号中,我如何实现示例二的输出?
使用双引号时,反斜杠'
字符可用于特殊用途,例如'n
是换行符(在文本中(。
要在文本中获得实际的反斜杠,需要添加两个:
$user_input = "This is the ''n input.";
有关反斜杠用法的更多信息,请查看文档。
之所以发生这种情况,是因为''n在这里作为换行符进行共排序,所以您可以转义该字符。将其更改为''''n
str_replace("'n","''n", $user_input);
否!你不能那样做
来自手册:
如果字符串用双引号("(括起来,PHP将为特殊字符解释更多的转义序列。
您需要使用另一种方法,如添加双斜杠。
str_replace(''', '''', $user_input);
这将转义所有特殊字符。现在,如果有双引号,那么它将按照您需要的方式显示。
或者,你也可以这样做。。。打印输出时,您可以通过以下方式将特殊字符转义为其字符:
str_replace(array("'n", "'t"), array(''n', ''t'), $user_input);
正确答案如下:
$user_input = str_replace (array("'n","'r"), " ", $user_input);
它用一个似乎最方便替换的空格替换换行符(但可能会根据字符串的未来用途进行更改。比如说,如果你要用HTML打印它,'<br>'
将是更好的替换(
尽管引号与此无关。它们只是PHP语法的一部分,在用户输入
$user_input = "This is the 'n input."
任何特殊字符都必须使用'
。如果要打印text is 'abcd' here
所以你必须写''abcd''
来打印这个。