将PHP双引号转换为单引号


Convert PHP double quotes to single quotes

我正在创建一个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''来打印这个。