# PHP是什么并且可以做什么？

# PHP 是什么？

PHP（“PHP: Hypertext Preprocessor”，超文本预处理器的字母缩写）是一种被广泛应用的开放源代码的多用途脚本语言，它可嵌入到 HTML中，尤其适合 web 开发。

以上是一个简单的回答，不过这是什么意思呢？请看如下例子：

示例 #1 一个介绍性的范例

    <!DOCTYPE html>
    <html>
        <head>
            <title>Example</title>
        </head>
        <body>

            <?php
            echo "Hi, I'm a PHP script!";
            ?>

        </body>
    </html>

PHP 页面并不包含大量输出 HTML 的命令（如 C 或 Perl 中所示），而是包含嵌入代码的 HTML，这些代码可执行某些操作（在本例中为输出 Hi, I'm a PHP script!）。PHP 代码包含在特殊的开始和结束处理指令 `<?php` 和 `?>` 中，允许跳入和退出 PHP 模式。

和客户端的 JavaScript 不同的是，PHP 代码是运行在服务端的。如果在服务器上建立了如上例类似的代码，则在运行该脚本后，客户端就能接收到其结果，但无法得知底层代码是什么。甚至可以将 web 服务器设置成让 PHP 来处理所有的 HTML 文件，这么一来，用户就无法知道正在使用 PHP。

使用 PHP 的最大的好处是它对于初学者来说极其简单，同时也给专业的程序员提供了各种高级的特性。当看到 PHP 长长的特性列表时，请不要害怕。使用 PHP，几乎任何人都可以快速上手并编写简单的脚本。

尽管 PHP 的开发主要侧重于服务器端脚本，但它可以做很多事情。请继续阅读，并在PHP 能做什么？章节中了解更多内容，或者直接转到简明教程，直接学习 Web 编程。

# PHP 能做什么？

PHP 能做任何事。PHP 主要是用于服务端的脚本程序，因此可以用 PHP 来完成任何其它的 CGI 程序能够完成的工作，例如收集表单数据，生成动态网页，或者发送/接收 Cookies。但 PHP 的功能远不局限于此。

PHP 脚本主要用于以下两个领域：

- 服务器端脚本。这是 PHP 使用最广泛、最主要的目标领域。开展这项工作需要具备以下三点：PHP 解析器（CGI 或服务器模块）、Web 服务器和 Web 浏览器。所有这些都可以在本地机器上运行，以便尝试 PHP 编程。有关更多信息，请参阅安装说明部分。
- 命令行脚本。PHP 脚本无需任何服务器或浏览器即可运行，只需 PHP 解析器即可使用。这种方式非常适合使用 cron（在 Unix 或 macOS 上）或任务计划程序（在 Windows 上）定期执行的脚本。这些脚本还可用于简单的文本处理任务。有关更多信息，请参阅有关 PHP 的命令行用法的部分。

PHP 可用于所有主流操作系统，包括 Linux、许多 Unix 变体（包括 HP-UX、Solaris 和 OpenBSD）、Microsoft Windows、macOS、RISC OS 以及其他操作系统。PHP 还支持当今大多数 Web 服务器。这包括 Apache、IIS 和许多其他服务器。这包括任何可以使用 FastCGI PHP 二进制文件的 Web 服务器，如 lighttpd 和 nginx。PHP 既可以作为模块工作，也可以作为 CGI 处理器工作。

因此，使用 PHP，开发者可以自由地选择操作系统和 web 服务器。同时，还可以在开发时选择使用面向过程或者面向对象（OOP），或者两者的混合。

PHP 不仅限于输出 HTML。PHP 的功能包括输出丰富的文件类型，例如图像或 PDF 文件、加密数据和发送电子邮件。还可以轻松输出任何文本，例如 JSON 或 XML。PHP 可以自动生成这些文件，并将它们保存在文件系统中，而不是将其打印出来，从而形成动态内容的服务器端缓存。

PHP 最强大最显著的特性之一，是它支持很大范围的数据库。使用任何针对某数据库的扩展（例如 mysql）编写数据库支持的网页非常简单，或者使用抽象层如 PDO，或者通过 ODBC 扩展连接到任何支持 ODBC 标准的数据库。其它一些数据库也可能会用 cURL 或者 sockets，例如 CouchDB。

PHP 还支持使用 LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM（Windows 环境）等协议与其他服务通信，以及其他无数协议。还可以打开原始网络套接字并使用任何其他协议进行交互。PHP 支持几乎所有 web 开发语言之间的 WDDX 复杂数据交换。关于相互连接，PHP 已经支持了对 Java 对象的实例化，并且可以无缝的将其用作 PHP 对象。

PHP 具有极其有效的文本处理特性，包括 Perl 兼容正则表达式（PCRE）以及许多扩展和工具可用于解析和访问 XML 文档。PHP 将所有的 XML 功能标准化于坚实的 libxml2 扩展，并且还增加了 SimpleXML，XMLReader 以及 XMLWriter 支持以扩充其功能。

另外，还有很多其它有趣的扩展库，在此根据字母和分类归类列出。还有一些附加的 PECL 扩展 可能有也可能没有在 PHP 手册中列出，例如 » XDebug。

本页不足以列出 PHP 可以提供的所有功能和优点。请继续参阅安装以及函数参考有关章节以获取关于这里提到的扩展库更多的信息。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open