将PHP双引号转换为单引号

时间:2013-01-15 10:04:48

标签: php string file-io

我正在创建一个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的输出?

5 个答案:

答案 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>'会更好更换)

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

答案 4 :(得分:0)

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

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