1.2 发送数据到Web浏览器

要利用PHP构建动态Web站点,必须知道如何发送数据到Web浏览器。PHP具有许多用于此目的的内置函数,其中最常用的是echoprint。我个人倾向于使用echo

echo 'Hello, world!';
echo "What's new?";

如果喜欢的话,可以代之以print()

print 'Hello, world!';
print "What's new?";

从这些示例可以看出,可以使用单引号或双引号(但是这两种引号之间有区别,到本章末尾就可以清楚看出它们之间的区别)。函数名后面的第一个引号指示要打印的消息的开头。下一个匹配的引号(即与左引号相同类型的右引号)指示要打印的消息的末尾。

除了学习如何发送数据到Web浏览器之外,还要注意在PHP中,所有语句(用外行的话讲就是一行执行代码)都必须以分号结尾。此外,在涉及函数名时PHP是不区分大小写的,因此ECHOechoeCHo等都会工作。当然,所有小写版本更容易输入。

发送数据到Web浏览器

1. 在文本编辑器或IDE中打开first.php(参见脚本1-2)。

2. 在PHP标签(第10行和第11行)之间添加一条简单的消息(参见脚本1-3)。

脚本1-3 PHP可以使用printecho发送数据到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>

在此,对于你在这里输入的消息内容,使用的是哪个函数(echoprint)或者哪种引号,都是无关紧要的——只是在打印单引号或双引号作为消息的一部分时,要小心谨慎(参见框注“需要转义”)。

需要转义

你可能已经发现,发送数据到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。

提示

  • 严格说来,echoprint是语言构造,而不是函数。顺便说一下,当我为了方便而继续称之为“函数”时,不要感到奇怪。此外,在指函数时,我用了一对括号(比如number_format(),而不仅仅是number_format),从而有助于把它们与变量以及PHP的其他部分区分开。这只是我自己的一个小小习惯。

  • 你通常也可以使用echoprint发送HTML代码到Web浏览器,其方法如下(参见图1-6)。

    echo '<p>Hello, <b>world</b>!</p>';
    

图1-6 PHP可以发送HTML代码(带有类似于这里的格式)以及简单的文本(参见图1-3)到Web浏览器

  • echoprint都可用于打印多行文本:

    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)。

目录