要利用PHP构建动态Web站点,必须知道如何发送数据到Web浏览器。PHP具有许多用于此目的的内置函数,其中最常用的是echo
和print
。我个人倾向于使用echo
:
echo 'Hello, world!';
echo "What's new?";
如果喜欢的话,可以代之以print()
:
print 'Hello, world!';
print "What's new?";
从这些示例可以看出,可以使用单引号或双引号(但是这两种引号之间有区别,到本章末尾就可以清楚看出它们之间的区别)。函数名后面的第一个引号指示要打印的消息的开头。下一个匹配的引号(即与左引号相同类型的右引号)指示要打印的消息的末尾。
除了学习如何发送数据到Web浏览器之外,还要注意在PHP中,所有语句(用外行的话讲就是一行执行代码)都必须以分号结尾。此外,在涉及函数名时PHP是不区分大小写的,因此ECHO
、echo
和eCHo
等都会工作。当然,所有小写版本更容易输入。
发送数据到Web浏览器
1. 在文本编辑器或IDE中打开first.php
(参见脚本1-2)。
2. 在PHP标签(第10行和第11行)之间添加一条简单的消息(参见脚本1-3)。
脚本1-3 PHP可以使用
echo
发送数据到Web浏览器
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>Using Echo</title> 6 </head> 7 <body> 8 <!-- Script 1.3 - second.php --> 9 <p>This is standard HTML.</p> 10 <?php 11 echo 'This was generated using PHP!'; 12 ?> 13 </body> 14 </html>
在此,对于你在这里输入的消息内容,使用的是哪个函数(echo
或print
)或者哪种引号,都是无关紧要的——只是在打印单引号或双引号作为消息的一部分时,要小心谨慎(参见框注“需要转义”)。
需要转义
你可能已经发现,发送数据到Web比较复杂的一个地方是打印单引号和双引号。下面两种方式都会引发错误:
echo "She said, "How are you?""; echo 'I'm just ducky.';对于这个问题有两种解决方案。首先,在打印双引号时使用单引号,反之亦然:
echo 'She said, "How are you?"'; echo "I'm just ducky.";或者,通过在有问题的字符前面放置一个反斜杠,对它进行转义:
echo "She said, \"How are you?\""; print 'I\'m just ducky.';转义的引号只会像任何其他字符一样打印。理解如何使用反斜杠对字符进行转义是一个重要的概念,我将在本章末尾更深入地介绍这个概念。
3. 你可以按自己的想法更改页面标题,以便更好地描述这个页面(第5行)。
<title>Using Echo</title>
这种改变只会影响浏览器窗口的标题栏。
4. 将文件另存为second.php
,存放在Web目录中,然后在Web浏览器中测试它(参见图1-3)。
图1-3 结果仍然不怎么迷人,但是这个页面有一部分是PHP动态生成的
注意,所有PHP脚本都必须通过URL(http://something)执行!
5. 如果必要,可调试脚本。
如果你看到的是解析错误,而不是你的消息(参见图1-4),请检查你是否同时具有左引号和右引号,以及对任何有问题的字符转义(参见框注“需要转义”)。还要肯定每一条语句都用分号结尾。
图1-4 这可能是PHP程序员看到的许多解析错误中的第一个错误(这个错误是由未转义的引号引起的)
如果看到的是完全空白的页面,这可能是由于下面两个原因之一引起的。
- HTML代码有问题。通过查看页面的源文件来测试它,并寻找其中的HTML问题(参见图1-5)。
图1-5 看到空白PHP页面的一个常见原因是简单的HTML错误,如这里的结束title
标签(少了斜杠)
- 发生一个错误,但是你的PHP配置中关闭了display_errors,因此,不会显示任何内容。在这种情况下,参见本书附录A中关于如何配置PHP一节的内容,以便能够再打开display_errors。
提示
严格说来,
echo
和print
是语言构造,而不是函数。顺便说一下,当我为了方便而继续称之为“函数”时,不要感到奇怪。此外,在指函数时,我用了一对括号(比如number_format()
,而不仅仅是number_format
),从而有助于把它们与变量以及PHP的其他部分区分开。这只是我自己的一个小小习惯。你通常也可以使用
echo
和print
发送HTML代码到Web浏览器,其方法如下(参见图1-6)。echo '<p>Hello, <b>world</b>!</p>';
图1-6 PHP可以发送HTML代码(带有类似于这里的格式)以及简单的文本(参见图1-3)到Web浏览器
echo
和print
都可用于打印多行文本:echo 'This sentence is printed over two lines.';
在这里所发生的事情是:回车符(通过按Enter键或Return键创建)将变成打印消息的一部分,它终止于闭合单引号。其实际效果将是在HTML源代码中“打印”回车符(参见图1-7)。这不会影响生成的页面(参见图1-8)。有关这方面的更多信息,参见框注“理解空白”。
图1-7 PHP源代码中的多行文本和HTML也会产生多行HTML源代码。注意:HTML中无关紧要的空白不会影响页面的外观(参见图1-8),但是可能使源文件更易于查阅
图1-8 HTML源代码中的回车符(参见图1-7)不会影响呈现的结果。改变显示的Web页面间距的唯一方式是使用HTML标签(如<br/>
和<p></p>
)
理解空白
利用PHP,可以发送数据(像HTML标签和文本)到Web浏览器。接下来,Web浏览器可以将其显示为最终用户查看的Web页面。因此,使用PHP其实就是在创建Web页面的HTML源文件(HTML source)。记住这一点,实质上可以在3个地方产生引人注目的空白(white space)(额外的空格、制表位以及空白行):在PHP脚本中、在HTML源文件中以及在呈现的Web页面中。
PHP一般会忽略空白,这意味着你可以在代码中增加空白,使自己的脚本更易读。HTML一般也会忽略空白。确切地讲,HTML中会影响页面的唯一空白是单个空格(多个空格仍然作为一个空格呈现)。如果HTML源文件中有多行的文本,这并不意味着在呈现的页面中它将出现在多行上(参见图1-7和图1-8)。
要改变呈现的Web页面的间距,可以使用HTML标签
<br/>
(换行符,在HTML老标准中是<br>
)和<p></p>
(段落)。要改变用PHP创建的HTML源文件的间距,可以:
- 在多个行上使用
echo()
或print()
;或者
- 在双引号内打印换行符(
\n
)。