PHP单引号和双引号的区别

5
//remove line breaks
function safeEmail($string) {
     return  preg_replace( '((?:\n|\r|\t|%0A|%0D|%08|%09)+)i' , '', $string );
}

/*** example usage 1***/
$from = 'HTML Email\r\t\n';

/*** example usage 2***/
$from = "HTML Email\r\t\n";

if(strlen($from) < 100)
{
    $from = safeEmail($from);

    echo $from;
}

1 返回 HTML 邮件,而 2 返回 HTML 邮件。

引号是什么意思?


可能是重复的问题:PHP中单引号字符串和双引号字符串的区别 - moinudin
让我给你展示一点魔法:google -> php 单引号 -> http://php.net/types.string -> 比你在这里能得到的更完整、更清晰的信息。 - Your Common Sense
2个回答

11
根据PHP文档,与双引号和heredoc语法不同,变量和特殊字符的转义序列不会在单引号字符串中被扩展。换句话说,双引号字符串会扩展变量和特殊字符的转义序列。而单引号字符串则不会。所以,在示例1中,使用单引号字符串,输出的字符串与输入完全相同,并包含反斜杠等所有字符。但在示例2中,字符串不以\r\t\n结尾,而是以回车、制表符和换行符结尾。也就是说,特殊字符的转义序列被扩展了。

3
因此,strlen('HTML Email\r\t\n') = 16,strlen("HTML Email\r\t\n") = 13,如果这样更清晰的话 :) - jensgram

1
在 PHP 中,使用单引号时,像 \n、\r、\t 等这些特殊字符不会按预期工作。根据 文档

要指定一个字面上的单引号,请使用反斜杠进行转义(\)。要指定一个字面上的反斜杠,请将其加倍(\\)。所有其他反斜杠实例都将被视为字面上的反斜杠:这意味着您可能习惯的其他转义序列,例如 \r\n,将按照指定的方式字面输出,而不具有任何特殊含义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接