在PHP中,通常可以用撇号代替引号,达到同样的效果。有时我们甚至故意使用引号和撇号的组合来实现不同的输出,而不必使用转义。
TLDR: 在某些情况下,使用引号是很危险的,所以在任何地方都要使用撇号来代替。引号只适用于特殊情况。
角色 | 名称 |
---|---|
" |
引号 |
' |
撇号 |
echo "你好,世界!"; // 这也是一样的echo '你好,世界!'; //像这样
在这种情况下,引号或撇号的使用并不重要。因此,从表面上看,引号和撇号之间似乎没有什么区别。
请考虑以下代码。
echo '我最喜欢的颜色是 "红色"!';
如果我用 "回车 "来给被写出的字符串定界,就会模糊不清地显示出字符串的开始和结束,所以我用 "撇号 "来给字符串定界,这样就解决了这个问题。
偶尔会有这样的情况,我需要在同一个字符串中同时列出引号'和
撇号'。你不仅可以使用两个字符串的连接,还可以使用所谓的escaping的字符。
echo "这个字符串/"包含/"引号。";
在这种情况下,反斜线的含义是 "正是这个字符",因此引号不会被视为字符串(或其他东西)的结尾,因此它将永远是一个引号。在无法保证其持久性和可能被误解的情况下,其他奇怪的字符也可以用这种方式标记。
引号可能是非常棘手的,因为它允许你直接在字符串中插入变量。
$color = '红色';echo "Moje oblíbená barva je {$color}, a tvoje?";
更安全的是撇号,它不允许这样做,你需要折叠字符串。
$color = '红色';echo '我最喜欢的颜色是' . $color . '和你的?';
一般来说,我建议使用撇号(如果可能的话)来限定任何东西,因为它们在字符串中远没有引号那么常见。
此外,PHP是一种网络语言,即用来生成HTML文档,其中引号是非常常见的,正是因为它们也被用来生成HTML代码的一部分。就个人而言,我建议习惯于在任何地方严格使用撇号,因为这样你就不必记住你所包围的东西。
小心点!不要把引号完全丢掉!它们有一些特殊的优点,对高级的PHP工作很有用--然而,初学者认为它们是错误的,不理解它们。
$x = 10; // 设置一个变量echo "Hodnota proměnné je: $x, přesně."; // 和一个列表
在引号内,你也可以列出变量的值,或者美元符号使它后面的一切都成为变量。因此,如果你不想输出一个变量的值,而是输出美元符号,你必须转义。
$price = 25; // 价格以美元计echo "Cena produktu: $price\$"; //打印出 "产品价格:25美元"
在这种情况下,引号的优势是值得怀疑的,使用撇号和简单地连接字符串可能更好。
$price = 25;echo '产品价格。' . $price . '$'; //打印结果与前面的例子相同
**注意:**以美元为单位的价格正确地写成了
$25
的格式,这将引起更大的混乱,因为$price
的符号实际上调用了一个叫做变量
的东西(在变量名称中我们调用了要调用的变量的名称--只是混淆)。
**TIP:**你可能对variable变量感兴趣。
一般来说,任何在引号或撇号中的东西都被当作一个字符串处理。因此。
$x = 5; // 这是另一回事。$x = "5"; //比这更重要。
在第一种情况下,数字5被存储在**$x变量中,在第二种情况下,字符串"5 "被存储在同一个变量中。幸运的是,这在PHP中并不重要,你可以用(几乎)同样的方式来处理这两种变体,因为PHP可以根据变量的内容自动变换**变量。然而,一般建议不要把数字写在引号里,特别是对于计算操作来说,这样会出现四舍五入的错误。
有时我可能想把一个函数的输出存储在一个变量中。
$pi = 3.14159;$zaokrouhleni = round($pi); // 这样做是正确的$zaokrouhleni = "round($pi)"; //这是 "错误的"(问题是我期望什么输出)。
第二种情况下的错误只是在引号中,当round()函数的输出不是存储在$round变量中,而是调用此函数的字符串。
**TIP:**值
$pi
不必像这样直接输入脚本,我们可以使用pi()
函数,这对更复杂的计算来说更准确。
**警告:**下面的例子只在引号中起作用,如果你用撇号括起来,它们就会像普通字符一样,没有特殊意义(除了````,它逃过撇号)。 当我想在引号或撇号内输出一些特殊字符时,可以将其解释为语言表达式,从而进行处理,即使程序员没有这个意思。我们已经展示了一个例子;本节描述了可能的行为例外。
这是因为有时逃避本身就带有特殊的含义。例子。
echo "长文本,分为两行。";
前面的例子打印出来了。
Dlouhý text, rozdělený nadva řádky.
因此,如果我们想写出一个斜线,我们必须同时转义它(在这种情况下转义`n'字符是不必要的,因为它将被理解为再次转义,或者在这种情况下我们必须根本不转义)。
echo "长文本,分为两行。";
像这样的特殊字符还有很多,例如`t'可以做一个tab。完整的清单在官方文件中。
首先,我想指出的是,几乎任何事情都可以在PHP中以多种方式完成,这里给出的例子只是为了说明问题的处理方式。
例如,如果我们想逐行解析文本,我们可以使用explode函数。
$parser = explode("\n", $retezec); // 逐行解析文本
在这种情况下,使用特殊字符n
是有意义的,因为我们可以非常有效地说,我们想通过换行来进行解析。
$parser = explode('', $retezec);
**警告:**在Unix和Windows系统中,用于标记行尾的字符是混乱的。例如,Windows使用
CRLF
(一对r
n字符),而Linux只使用
LF(一个
n字符)。在逐行解析时,应牢记这一点。通常情况下,通过将字符规范化为
LF`来解决这个问题。
如果可以的话,在任何地方都使用括号。
了解引号的使用,并只在必要时(或一般情况下好)使用引号是很好的。如果你输出的文本可能包含引号,请用撇号将其括起来(这时的行为更可预测)。就个人而言,我使用引号来表达各种特殊字符,这些字符用撇号输入是不必要的,需要复杂的转义。
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | zh