发新话题
打印

PHP单引号与双引号

PHP单引号与双引号

在PHP中,理解单引号与双引号有什么区别是重要的。如本章的示例中所示的那样,可以使用echo()或print()语句,但是,这两个语句以及使用它们的原因之间有一个关键的区别。迄今为止,我详细说明了何时应该使用它们,但是,现在将更明确地定义它们的使用模式。

在PHP中,封闭在单引号内的值将照字面意义进行处理,而封闭在双引号内的值则将被解释。换句话说,把变量和特殊字符(表1-2)放在双引号内将导致打印出它们表示的值,而不是它们的字面值。例如,假定你具有:

$var = 'test';

代码echo "var is equal to $var";将打印出var is equal to test,而代码echo 'var is equal to $var';将打印出var is equal to $var。使用一个转义的美元符号,代码echo "\$var is equal to $var";将打印出$var is equal to test,而代码echo '\$var is equal to $var';将打印出\$var is equal to $var

表1-2  当在双引号内使用这些字符时,它们具有特殊的含义

转义字符的代码

转义字符的含义

\"

双引号

\'

单引号

\\

反斜杠

\n

换行符

\r

回车符

\t

制表符

\$

美元符号

正如这些示例所说明的,双引号将用变量的值(test)代替它的名称($var),并用特殊字符表示的值($)代替它的代码(\$)。单引号总是准确地打印你输入的内容,除了转义的单引号(\')和转义的反斜杠(\\)之外,它们将分别被打印为一个单引号和一个反斜杠。

当给变量赋值或者将数据作为参数发送给函数时,上述规则适用于echo()或print()语句内使用的任何引号。在另一个说明两种引号的区别的示例中,我将修改numbers.php脚本,以此作为试验。

使用单引号和双引号

(1) 在文本编辑器中打开numbers.php(参考脚本1-9)。

(2) 删除现有的echo()语句(脚本1-11)。

脚本1-11  这个最终的脚本演示了使用单引号和双引号之间的区别

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

2         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

4 <head>

5   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

6   <title>Quotation Marks</title>

7 </head>

8 <body>

9 <?php # Script 1.11 - quotes.php

10 

11  // Set the variables.

12  $quantity = 30; // Buying 30 widgets.

13  $price = 119.95;

14  $taxrate = .05; // 5% sales tax.

15 

16  // Calculate the total.

17  $total = $quantity * $price;

18  $total = $total + ($total * $taxrate); // Calculate and add the tax.

19  $total = number_format ($total, 2);

20 

21  // Print the results.

22  echo 'Using double quotation marks:<br />';

23 echo "You are purchasing <b>$quantity</b> widget(s) at a cost of <b>\$$price</b> each. With tax, the total comes to <b>\$$total</b>.\n";

24 

25  echo '<p><hr /></p>Using single quotation marks:<br />';

26 echo 'You are purchasing <b>$quantity</b> widget(s) at a cost of <b>\$$price</b> each. With tax, the total comes to <b>\$$total</b>.\n';

27  ?>

28  </body>

29  </html>

(3) 打印一个标题,然后使用双引号重写原来的echo()语句。

echo 'Using double quotation marks: <br />';

echo "You are purchasing <b>$quantity</b> widget(s) at a cost of

→<b>\$$price</b> each. With tax, the total comes to <b>\$$total</b>.\n";

通过使用双引号而不是单引号和连接运算符,可以得到这个脚本相同的预期结果??打印购买的器具数量、购买价格以及含税的总金额,如同它原来所做的那样。注意:我还使用了\$$variable技术来生成像$3778.43这样的结果(第一个美元符号会被打印,而第二个美元符号则是变量名称的开始字符)。

(4) 重复使用第一个echo()语句,这一次使用单引号。

echo '<p><hr /></p>Using single quotation marks: <br />';

echo 'You are purchasing <b>$quantity</b> widget(s) at a cost of

→<b>\$$price</b> each. With tax, the total comes to <b>\$$total</b>.\n';

第一行用于增加一些间距和一个水平标尺,其后接着一个标题。第二个echo()语句用于突出显示使用单引号和双引号之间的区别。

(5) 如果需要,可更改页面的标题。

(6) 将文件另存为quotes.php,上载到Web服务器,并在Web浏览器中测试它。

图这些结果演示了何时以及如何使用一种引号,而不使用另一种引号提示

 

l 由于PHP将试图找出那些需要将其值插入到双引号内的变量,所以从理论上讲,使用单引号要快一些。但是,如果需要打印一个变量的值,则必须使用双引号。

l 因为有效的HTML常常包括许多用双引号括住的属性,所以当利用PHP打印HTML时,使用单引号最容易。

echo '<table width="80%" border="0" cellspacing="2" cellpadding="3"        

→align="center">';

      如果想使用双引号打印出这段HTML代码,将不得不对字符串中的所有双引号进行转义。

echo "<table width=\"80%\" border=\"0\" cellspacing=\"2\"              

→cellpadding=\"3\" align=\"center\">";

l   PHP还支持引用文本的heredoc方法。如果你已经熟悉了这个概念,并且对替代方法感到好奇,可以检查PHP手册,以了解正确的语法。

TOP

发新话题