PHP 手册

英文版权及引用文章归原著者所有

中文整理及CHM制作:星空浪子 zhongcfido@126.com http://netleader.126.com
您可以对本手册进行复制，但必须保证本手册的全整性，手册的错误之处请给我EMAIL或通过别的方式与我联系，我将在下一个版本中更新。

更新的版本或PHP的应用范例，及PHP的技术论坛请访问http://netleader.126.com/

完成于2000-2-13日

  • 导读

  • 第一章 PHP 介绍
    1. 来龙去脉
    2. 功能概述
    3. PHP 与其它 CGI 的比较
  • 第二章 安装与设定
    1. 环境需求与准备工作
    2. 快速设定及安装
    3. PHP 的编译设定细部选项
    4. php.ini 设定细部选项
    5. 如何写作 PHP 程式
  • 第三章 语法
    1. 语法简述
      1. hello, world
      2. 嵌入方法
      3. 引用档案
      4. 程式注解
    2. 常数与变数
      1. 常数型态
      2. 变数型态
      3. 变数的使用
    3. 运算符号
      1. 算术运算
      2. 字串运算
      3. 设定运算
      4. 位元运算
      5. 逻辑运算
      6. 其它运算符号
    4. 流程控制
      1. if..else 回圈
      2. do..while 回圈
      3. for 回圈
      4. switch 回圈
      5. 其它的流程控制
    5. 函式与物件
      1. 函式
      2. 物件
  • 第四章 函式库及函式
    1. Adabas D 资料库连结函式库
    2. 阿帕契伺服器专用函式库
    3. 阵列处理函式库
    4. 拼字检查函式库
    5. BC 高精确度函式库
    6. 历法函式库
    7. ClibPDF 函式库
    8. 日期与时间函式库
    9. DBA 函式库
    10. dBase 格式资料表函式库
    11. dbm 类资料库函式库
    12. 目录管理函式库
    13. 动态连结函式库
    14. 程式执行功能函式库
    15. FDF 函式库
    16. filePro 资料库函式库
    17. 档案系统函式库
    18. HTTP 相关函式库
    19. Hyperwave 伺服器函式库
    20. 图形处理函式库
    21. IMAP 电子邮件系统函式库
    22. PHP 选项及相关资讯函式库
    23. Informix 资料库函式库
    24. InterBase 资料库函式库
    25. LDAP 目录协定函式库
    26. 电子邮件函式库
    27. 数学运算函式库
    28. mcrypt 编码函式库
    29. mhash 杂凑函式库
    30. 杂项函式库
    31. mSQL 资料库函式库
    32. SQL Server 资料库函式库
    33. MySQL 资料库函式库
    34. Sybase 资料库函式库
    35. 网路函式库
    36. NIS 函式库
    37. ODBC 资料库连结函式库
    38. Oracle 8 资料库函式库
    39. Oracle 资料库函式库
    40. Perl 相容语法函式库
    41. PDF 格式档案函式库
    42. PostgreSQL 资料库函式库
    43. 常规表示法函式库
    44. 信号与共享记忆体函式库
    45. Solid 资料库连结函式库
    46. SNMP 网管函式库
    47. 字串处理函式库
    48. URL 处理函式库
    49. 变数处理函式库
    50. Vmailmgr 邮件处理函式库
    51. WDDX 函式库
    52. 压缩档案函式库
    53. XML 剖析函式库
    54. Session 函式库
    55. GNU 记录函式库
    56. FTP 档案传输函式库
    57. MCAL 模组日历存取函式库
  • 第五章 范例程式
    1. 访客计数器
    2. 使用者认证
    3. 聊天室
    4. 留言版
    5. 意见信箱
    6. 广告轮播

  • 附录 A 函式索引


导读

本书适合对网站已有初步认识的 Webmaster 或是专业的 CGI 程式开发人员。全书分成五章：

第一章 | 主要是介绍 PHP 的背景及功能，并将 PHP 和其它的 CGI 介面比较，让您对 PHP 有初步的认识。
第二章 | 说明 PHP 的安装及设定部份。对于分工较细的网站，本章适合系统管理人员在建置 PHP 系统的参考。
第三章 | 本章说明了 PHP 的程式结构与相关语法，提供想要学习 PHP 语言的读者一个完整的基础。
第四章 | 这是本书的最重要部份，也将是您将本书留在书签或我的最爱的理由。本章将 967 个 PHP 的函式，依其所属的性质分成 55 个单元，对函式提供详细的解说，并适时提供相关的范例。
第五章 | 本章的范例程式都是作者在 Web CGI 上多年实战经验的累积，为前面几章的总成及综合范例。您可以从这些程式入手，精心打造属于自己网站的专用程式，让您的网站与众不同。
附录Ａ | 可让您在对某函式有印象时，快速找到您要的函式。

对于刚开始接触 PHP 的读者，建议从第一章或者第二章开始读起，按部就班打好基础。对于完全掌握 PHP 程式语言的高手，建议将第四章看一次，加上附录Ａ函式索引，必让您在开发 PHP 程式时如虎添翼。对于学了一点，却又觉得有些不够的读者，建议从第五章，研究现成的程式，让您对 PHP 加深结构语法的印象。


PHP 的来龙去脉

讲到 PHP 的全名就蛮有趣的，它是一个巢状的缩写名称，"PHP: Hypertext Preprocessor"，打开缩写还是缩写。PHP 是一种 HTML 内嵌式的语言 (类似 IIS 上的 ASP)。而 PHP 独特的语法混合了 C、Java、Perl 以及 PHP 式的新语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。

图一: PHP 是 Web Server 最佳的后端延伸介面

PHP 最初是在西元 1994 年 Rasmus Lerdorf 开始计画发展。在 1995 年以 Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本。在这早期的版本中，提供了访客留言本、访客计数器等简单的功能。随后在新的成员加入开发行列之后，在 1995 年中，第二版的 PHP 问市。第二版定名为 PHP/FI(Form Interpreter)。PHP/FI 并加入了 mSQL 的支援，自此奠定了 PHP 在动态网页开发上的影响力。在 1996 年底，有一万五千个 Web 站台使用 PHP/FI；在 1997 年中，使用 PHP/FI 的 Web 站台成长到超过五万个。而在 1997 年中，开始了第三版的开发计划，开发小组加入了 Zeev Suraski 及 Andi Gutmans，而第三版就定名为 PHP3。

PHP3 跟 Apache 伺服器紧密结合的特性；加上它不断的更新及加入新的功能；并且它几乎支援所有主流与非主流资料库；再以它能高速的执行效率，使得 PHP 在 1999 年中的使用站台超过了十五万!!它的原始码完全公开，在 Open Source 意识抬头的今天，它更是这方面的中流砥柱。不断地有新的函式库加入，以及不停地更新的活力，使得 PHP 无论在 UNIX 或是 Win32 的平台上都可以有更多新的功能。它提供丰富的函式，使得在程式设计方面有着更好的支援。

PHP 的第四代 Zend 核心引擎已经进入测试阶段。整个剧本程式的核心大幅更动，让程式的执行速度，满足更快的要求。在最佳化之后的效率，已较传统 CGI 或者 ASP 等程式有更好的表现。而且还有更强的新功能、更丰富的函式馆。无论您接不接受，PHP 都将在 Web CGI 的领域上，掀起巅覆性的革命。对于一位专业的 Web Master 而言，它将也是必修课程之一。

[ 下一页 ]


PHP 的功能概述

PHP 在资料库方面的丰富支援，也是它迅速窜红的原因之一，它支援下列的资料库或是资料表：

  • Adabas D
  • DBA
  • dBase
  • dbm
  • filePro
  • Informix
  • InterBase
  • mSQL
  • Microsoft SQL Server
  • MySQL
  • Solid
  • Sybase
  • ODBC
  • Oracle 8
  • Oracle
  • PostgreSQL

而在 Internet 上它也支援了相当多的通讯协定 (protocol)，包括了与电子邮件相关的 IMAP, POP3；网管系统 SNMP；网路新闻 NNTP；帐号共用 NIS；全球资讯网 HTTP 及 Apache 伺服器；目录协定 LDAP 以及其它网路的相关函式。

除此之外，用 PHP 写出来的 Web 后端 CGI 程式，可以很轻易的移植到不同的作业平台上。例如，先以 Linux 架的网站，在系统负荷过高时，可以快速地将整个系统移到 SUN 工作站上，不用重新编译 CGI 程式。面对快速发展的 Internet，这是长期规划的最好选择。

在加入其它的模组之后，提供了更多样的支援如下：

  • 英文拼字检查
  • BC 高精确度计算
  • 西洋历法
  • PDF 档案格式
  • Hyperwave 伺服器
  • 图形处理
  • 编码与解码功能
  • 杂凑处理
  • WDDX 功能
  • qmail 与 vmailmgr 系统
  • 压缩档案处理
  • XML 解析

除此之外，一般语言有的数学运算、时间处理、档案系统、字串处理、行程处理等功能，它一样都不缺。再加上它是免费的系统，使得成本与效益比，几乎等于无限大！


PHP 与其它 CGI 的比较

无可置疑的，写 CGI 的方式有很多种，而 PHP 只是其中的一种选择罢了。对资深的 Webmaster 而言，CGI 的写作介面应是随着需求而更动。毕竟，在一个对系统反映速度要求极严格的系统而言，恐怕只有 NSAPI 介面写的 CGI 程式才能符合要求了。在其它的场合，相信使用 PHP 来作为 CGI 的介面是游刃有余，而且是最适合的。

程式介面 | PHP | ASP | CGI | NSAPI | ISAPI
作业系统 | 均可 | Win32 | 均可 | 均可 | Win32
Web伺服器 | 数种 | IIS | 均可 | Netscape Server | IIS
执行效率 | 快 | 快 | 慢 | 极快 | 极快
稳定性 | 佳 | 中等 | 最高 | 差 | 差
开发时间 | 短 | 短 | 中等 | 长 | 长
修改时间 | 短 | 短 | 中等 | 长 | 长
程式语言 | PHP | VB | 不限 | C/C++ | C/Delphi
网页结合 | 佳 | 佳 | 差 | 差 | 差
学习门槛 | 低 | 低 | 高 | 极高 | 高
函式支援 | 多 | 少 | 不定 | 中等 | 少
系统安全 | 佳 | 极差 | 最佳 | 佳 | 尚可
使用站台 | 超多 | 多 | 多 | 极少 | 少
改版速度 | 快 | 慢 | 无 | 慢 | 慢

其中的 PHP 可用在数种 Web 伺服器上；传统 CGI 就不限是哪种作业系统或 Web 伺服器平台；NSAPI 一定要在 Netscape 的伺服器 (如 Netscape Enterprise Server 或 FastTrack Server) 上才可以执行，但可支援多种作业系统 (UNIX 或 Win32)；ASP 及 ISAPI 只在 IIS 上有完整的功能。

在稳定性上，由于 NSAPI 或 ISAPI 是动态连结的方式，因此在执行若出现问题，会使得 Web 伺服器一起瘫痪。而 ASP 在吾人实际应用经验上，隔阵子就会使系统不稳定，需要重开作业系统。PHP 在许多的站台使用上，不但长期使用都没有问题，而且程式的稳定性也不错。当然最稳的还是传统 CGI 程式，因为它是由作业系统负责控制，不会因 CGI 程式的错误导致 Web 伺服器的不稳定。

在开发及维护时间上，PHP 及 ASP 都有不错的表现。而 NSAPI 及 ISAPI 则需要长时间的开发过程，在稳定上线后，这二种介面反倒是效率最佳的方法。传统的 CGI 程式则要视开发工具语言而定了，用 Perl 或是 shell script 不需要编译的过程，直接就可以执行，若用 Delphi 或 VC/BCB 甚至用组合语言等都要经过编译才能执行，至于用 VB 来写传统 CGI，唉....。

要比较和网页结合的能力，PHP 和 ASP 是并驾齐驱的，其它的方式就不能内嵌 HTML 语法了。而这也是影响开发时间的因素之一。

就系统安全性而言，ASP 是最差的，在没有经过微软的 IIS Service Pack 处理过，使用 ::$DATA 就可以看到 ASP 的原始码，这真是叫人不敢领教。当然，传统 CGI 的程式，由于是由作业系统直接管理，要破解的难度最高，骇客必须由作业系统下手，而不能由 Web 伺服器下手。PHP 在许多商业及非商业使用时，也没有听过有什么安全的问题。

在新增功能及改版方面，传统的 CGI 由于不受任何语言限制，没有这方面的问题。PHP 是最有活力的，数天至数周就有一个新版本出现，每次的新版，就代表更多的功能及修正更多的错误。其它的 ASP、NSAPI、ISAPI 就视它的 Web 伺服器改版速度了，ASP 要等到 IIS 5.0 出现时才会有 ASP 3.0，也就是要等到 Windows 2000 正式上市。

综言之，在 Web 的后端 CGI 程式，就像鱼与熊掌一般，没有高效能又开发方便的选择。不过相信 PHP 是处于开发容易、效能亦不错的平衡点上。


环境需求与准备工作

在安装 PHP 做为 WWW 伺服器的一部份时，我们可以考虑用 UNIX 作业系统；或者是 Windows NT/95 等 Win32 API 的平台。当然，大部份的人都会使用 UNIX 来当作 PHP 的执行平台 (在 Windows NT 的使用者大多数都会选择 IIS + ASP)，因此，本书的所有内容以及范例程式都是在 UNIX 上为主。实际上，Linux + Apache + PHP 应是最经济的选择，因为这样的组合几乎是不用钱的，成本与效益比这也是最好的选择。而许多成功站台的经验，更是采用这种组合最好的背书。

Linux 作业系统方面，您可以选择各式的 Linux 套件，包括 Slackware Linux、RedHat、OpenLinux、SuSE....等等，反正这方面的软体在坊间也是很容易而且很便宜就可以买到。对学生而言，也可以去各大 FTP 站下载完整的系统安装。

Apache 伺服器则是目前最多 WWW 网站所采用伺服器。您可以至 http://www.apache.org 下载最新版的程式及相关文件，若您觉得从国外下载要很久的话，也可以用它的 Mirror 站台下载。

PHP 则可以去它的官方网站 http://www.php.net 下载所需要的程式。

虽然目前 WindowsNT 或者 Windows98 等 Win32 的作业平台也能安装 PHP 及 Apache 伺服器，不过这似乎没什么道理，因为 PHP 和 Apache 在 UNIX下可以跑得更快更好。

当然，若想使用商业化的作业平台，SUN、IBM、HP、DEC、SGI、NEC 等公司都有提供相关的 UNIX 或者是 WindowsNT 的作业平台。加上高安全性调整过后的 Apache 伺服器：Stronghold 或是其它支援 SSL 的 Apache 版本。这种组合，相信能满足商业化的需求。而 PHP 就扮演着快速方便的 CGI 角色，让客户对站台的服务品质更加满意。


快速设定及安装

以下是基本的安装动作，作业环境是 UNIX 系列的作业平台。在安装之前，要先下载 apache_1.3.x.tar.gz 及 php-3.0.x.tar.gz 二个档案。可以将这二个档案放在 /usr/src 中再开始执行以下的动作。而下面每个行号后的动作都是整串字连在一起的，在这可能会分行而造成误会。

  1. gzip -d -c apache_1.3.x.tar.gz | tar xvf -
  2. gzip -d -c php-3.0.x.tar.gz | tar xvf -
  3. cd apache_1.3.x
  4. ./configure --prefix=/www
  5. cd ../php-3.0.x
  6. ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
  7. make
  8. make install
  9. cd ../apache_1.3.x
  10. ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
  11. make
  12. make install

第一、二行利用 gzip 及 tar 加上管道功能，将压缩档解压还原。然后在 Apache 的原始档目录中执行环境设定，--prefix 选项指示 Apache 的安装目录路径。之后进入 PHP3 的原始档目录中，若没有 MySQL 资料库，则可省略 --with-mysql 的选项，重要的是一定要加入 --with-apache 选项，而且 Apache 原始档的路径要正确。设定完 PHP3 之后就编译、安装到 Apache 的原始档目录中。之后在 Apache 原始档目录中再加入 PHP 的模组档。在编译及安装 Apache 之后就初步完成了。之后就是要设定 Apache 才能让 Web Server 顺利运作。

值得注意的是，PHP 要和任何资料库连线，都要在执行这些动作之前先将资料库设好，并确定 Web Server 上可以顺利存取资料库系统。若有需要其它的一些 PHP 外部模组也要先设定好这些模组。

  13. cd ../php-3.0.x
  14. cp php3.ini-dist /usr/local/lib/php3.ini

之后将 php3.ini 放在指定的目录，若有需要，也可以手动修改 php3.ini 档档，以符合使用的要求。

在 Apache 伺服器的设定方面，要在 Apache 的设定档 httpd.conf 或 srm.conf 档案中加入下面的字串。告诉 Apache 伺服器，副档名 php3 是一个特殊的程式档案。当然副档名可以设成别的副档名，还有一些站台将 php 的程式副档名设为 phtml 也是不错的选择，反正这就要看 Webmaster 的规划了。

AddType application/x-httpd-php3 .php3

在 PHP 4.x 版的方法大致和 PHP 3.0.x 版相同，不同的地方在于 PHP 4.x 的目录名称及编译后的模组放置目录不同。此外，内定的副档名也由 .php3 变成了 .php。当然在安装前还是要先下载 PHP 4.x 的程式才行。

  1. gzip -dc apache_1.3.x.tar.gz | tar xvf -
  2. gzip -dc php-4.0.x.tar.gz | tar xvf -
  3. cd apache_1.3.x
  4. ./configure --prefix=/www
  5. cd ../php-4.0.x
  6. ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
  7. make
  8. make install
  9. cd ../apache_1.3.x
  10. ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a
  11. make
  12. make install
  13. cd ../php-4.0.x
  14. cp php.ini-dist /usr/local/lib/php.ini

在 httpd.conf 或 srm.conf 加入

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

而 PHP 4.x 版中对 Apache 伺服器加入了新的环境变数设定项。

php_value [PHP directive name] [value]
php_flag [PHP directive name] [On|Off]
php_admin_value [PHP directive name] [value]
php_admin_flag [PHP directive name] [On|Off]

在 PHP 3.0.x 版中，有些目录可能会有 .htaccess 的档案，使用 PHP 4.0.x 版的系统，必须将这个档案拿掉，可以使用改名字的方式或者直接删除。

当一切设定好了之后，重新执行 Apache 伺服器。在 Apache 目录下有 bin 或是 sbin 的目录，其中会有 apachectl 的 shell 程式，输入 apachectl restart 就可以重新启动 Apache 伺服器了。赶快试看看 hello, world 程式吧！


PHP 的编译设定细部选项

在细部选项上，除了上述的安装简述外，也可以在编译时加入其它的选项。

阿帕契模组
语法: --with-apache=DIR
说明: 用本选项可以让 PHP 以阿帕契的模组方式使用，DIR 的字串可以是 /usr/local/apache 或其它安装阿帕契的目录
范例: --with-apache=/var/lib/apache

fhttpd 伺服器模组
语法: --with-fhttpd=DIR
说明: 若使用 fttpd 伺服器，可以使用本指令编译 PHP。用模组的方式配合 fttpd 伺服器，可以有较好的效能。

Adabas D 资料库
语法: --with-adabas=DIR
说明: 资料库系统为 Adabas D 资料库时需要加本选项。关于 Adabas D 资料库的细节，可以参考 http://www.adabas.com。
范例: --with-adabas=/usr/local/adabasd

dBase 资料表
语法: --with-dbase
说明: 只要加本选项，不用其它的参数或函式库，PHP 就会让系统有存取 dBase 资料表的功能。

filePro 资料库
语法: --with-filepro
说明: 不用指定资料库路径及其它函式库等，可以读取 filePro 资料库 (唯读)。

mSQL 资料库
语法: --with-msql=DIR
说明: 提供存取 mSQL 资料库。更多的细节请参考 mSQL 的网站 http://www.hughes.com.au。
范例: --with-msql=/usr/local/Hughes

MySQL 资料库
语法: --with-mysql=DIR
说明: 提供存取 MySQL 资料库。更多的细节请参考 MySQL 的网站 http://www.tcx.se。
范例: --with-mysql=/usr/local/mysql

iODBC 资料库装置
语法: --with-iodbc=DIR
说明: 提供 ODBC 资料库装置，用来存取后端资料库。更多的细节请参考 iODBC 的网站 http://www.iodbc.org。
范例: --with-iodbc=/usr/local/iodbc

OpenLink ODBC 资料库装置
语法: --with-openlink=DIR
说明: 使用 OpenLink ODBC 资料库装置，用来存取后端资料库。更多的细节请参考 OpenLink ODBC 的网站 http://www.openlinksw.com。
范例: --with-openlink=/usr/local/openlink

Oracle 资料库
语法: --with-oracle=DIR
说明: 使用 Oracle 资料库。Oracle 的版本要在 7.3 版以上。您也可以在 PHP 程式中使用环境变数 ORACLE_HOME 来指定 Oracle 的路径。更多有关 Oracle 的资讯请参考 Oracle 的网站 http://www.oracle.com。
范例: --with-oracle=/export/app/oracle/product/7.3.2

PostgreSQL 资料库
语法: --with-pgsql=DIR
说明: 使用 PostgreSQL 资料库。更多有关 PostgreSQL 的资讯请参考 PostgreSQL 的网站 http://www.postgreSQL.org 或台湾的 Mirror 站 http://postgresql.ccit.edu.tw。
范例: --with-pgsql=/usr/local/pgsql

Solid 资料库
语法: --with-solid=DIR
说明: 使用 Solid 资料库。更多有关 Solid 的资讯请参考 Solid 的网站 http://www.solidtech.com。
范例: --with-solid=/usr/local/solid

Sybase 资料库
语法: --with-sybase=DIR
说明: 使用 Sybase 资料库。更多有关 Sybase 的资讯请参考 Sybase 的网站 http://www.sybase.com。
范例: --with-sybase=/home/sybase

Sybase-CT 资料库
语法: --with-sybase-ct=DIR
说明: 使用 Sybase-CT 资料库。
范例: --with-sybase-ct=/home/sybase

Velocis 资料库
语法: --with-velocis=DIR
说明: 使用 Velocis 资料库。有关 Velocis 资料库的进一步资料请参考 Raima 公司的网站 http://www.raima.com。
范例: --with-velocis=/usr/local/velocis

自订 ODBC 资料库驱动程式
语法: --with-custom-odbc=DIR
说明: 使用自订的 ODBC 函式库。当然，在使用本方式时要指定 CUSTOM_ODBC_LIBS 及 CFLAGS 变数。例如在 QNX 机器上使用 Sybase SQL Anywhere 时可能要设定系统环境变数 CFLAGS=-DODBC_QNX、LDFLAGS=-lunix 及 CUSTOM_ODBC_LIBS="-ldblib -lodbc"，并要在 PHP 设定加入 --with-custom-odbc=/usr/lib/sqlany50
范例: --with-custom-odbc=/usr/local/odbc

不使用 ODBC 资料库驱动程式
语法: --disable-unified-odbc
说明: 使用本选项将使所有的 ODBC 资料库驱动程式不作用。本选项不用指定路径，而受本选项影响的选项有 --with-iodbc、--with-solid、--with-adabas、--with-velocis 及 --with-custom-odbc。

LDAP 目录协定
语法: --with-ldap=DIR
说明: 若要使用目录协定 (Lightweight Directory Access Protocol, LDAP) 则必须要打开本选项。有关 LDAP 的细节，可以参考 RFC 文件的 RFC1777 及 RFC1778。
范例: --with-ldap=/usr/local/ldap.

mcrypt 编码函式库
语法: --with-mcrypt=DIR
说明: 当安装了 mcrypt 函式库后，可在编译 PHP 时加入本选项，让程式可以使用编解码功能。
范例: --with-mcrypt=/usr/local/include

Sys V 信号
语法: --enable-sysvsem
说明: 要使用 SysV 的信号 (semaphores) 机制，则要打开本选项。

XML 支援
语法: --with-xml
说明: 打开本选项可以支援 James Clark's 写的 XML 剖析程式库。

维护模式
语法: --enable-maintainer-mode
说明: 本选项一般不会打开，除非是 PHP 开发人员比较有用。

常规表示程式库
语法: --with-system-regex
说明: 若您需要额外的常规表示功能，可以加入本选项。

PHP 设定档
语法: --with-config-file-path=DIR
说明: 用来指定 php3.ini 或 php4.ini 的路径，供 PHP 初始化时使用。
范例: --with-config-file-path=/usr/local/lib

PHP 执行路径
语法: --with-exec-dir=DIR
说明: 有时为了系统的安全性考量，会指定 PHP 程式一定要在哪个目录执行。
范例: --with-exec-dir=/usr/local/bin

除错模式
语法: --enable-debug
说明: 本选项一般不会使用，除非在开发 PHP 程式时比较有用。它可以显示额外的错误讯息。

安全模式
语法: --enable-safe-mode
说明: 内定值是打开的，可以对系统安全提供比较多的保护。

变数追踪
语法: --enable-track-vars
说明: 让 PHP 能 追踪 HTTP_GET_VARS、HTTP_POST_VARS 及 HTTP_COOKIE_VARS 三个变数，一般是打开的。

自动加引入字元
语法: --enable-magic-quotes
说明: 可让程式在执行时自动加入反斜线的引入字元。

开启除错器
语法: --enable-debugger
说明: 打开内建的 PHP 除错器。目前本功能还在实验阶段，尚未成熟。

取消路径 (discard path)
语法: --enable-discard-path
说明: 打开这个选项，使用者就不能透过浏览器读取 .htaccess 等和系统安全相关的档案。

高精确度数学函式
语法: --enable-bcmath
说明: 打开高精确度函式。必须要先安装本函式库，本选项方有效。

强迫 CGI 重导
语法: --enable-force-cgi-redirect
范例: 若使用 CGI VERSION 模式来执行 PHP 的设，打开本选项会增加安全性。例如使用者读 http://my.host/cgi-bin/php/secret/doc.html 遇到比较了解 PHP 系统的骇客级使用者可能会自已输入以下网址 http://my.host/secret/doc.html 来读取相关资讯。若 PHP 和 Apache 编译在一起，让 PHP 变成 Apache 的一部份，则不需要加入本选项。

不使用短的标记
语法: --disable-short-tags
说明: 设定本选项后，PHP 的程式就不能使用短的 <? .... ?> 标记，一定要用 <?php ...... ?> 的长标记。

引入远端档案
语法: --enable-url-includes
说明: 设定本选项可让 PHP 程式可以引入 (include) 远端的 HTTP 或 FTP 伺服器中的档案。

关闭语法效果
语法: --disable-syntax-hl
说明: 使用本选项会关闭 PHP 语法的彩色效果。

函式库路径
语法: CPPFLAGS=-IDIR 及 LDFLAGS=-LDIR
说明: 若 PHP 在安全或编译所需的函式库在特别的路径，需要加入本选项，LDFLAGS 表示函式库的路径，CPPFLAGS 表示标头档的路径。
范例: LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure


php.ini 设定细部选项

php.ini 或 php3.ini 是 PHP 在启动时会读取的设定档。该档的存放路径为 /usr/local/lib/。在 PHP 3.x 版的设定档为 php3.ini；而在 PHP 4.x 版改为 php.ini。若 PHP 安装成伺服器的模组，则在 Web 伺服器启动执行时会读取，之后就不再读取，因此更动设定的话要重新启动 Web 伺服器。若使用独立 PHP CGI 方式，则每次都读一次。

要看目前的系统设定，可以用 phpinfo() 看到。以下为选项设定

php_value name value
设定变数名称和值。本选项需 PHP 4.x 版之后方可使用。

php_flag name on|off
设定旗标布林变数选项。本选项需 PHP 4.x 版之后方可使用。

php_admin_value name value
设定 Apache 的设定档变数。原来在 .htaccess 的设定改到这个选项设定。本选项需 PHP 4.x 版之后方可使用。

php_admin_flag name on|off
设定布林变数当旗标。本选项需 PHP 4.x 版之后方可使用。

asp_tags boolean
设定 PHP 程式是否剖析以 ASP Script 语法 <% %> 的标记 (tag)。本选项在 PHP 3.0.4 之后才可使用。更多的细节可以参考 嵌入方法 的部份。

auto_append_file string
设定本选项可以让指定的档案附加在原 PHP 程式后面自动执行。若 PHP 程式中有用到 exit() 函式，则指定的档案不会执行。参数 string 即为指定自动执行的档案。

auto_prepend_file string
设定本选项可以让指定的档案在原 PHP 程式之前自动执行。参数 string 即为指定自动执行的档案。

cgi_ext string
本选项设定 CGI 程式的副档名。

display_errors boolean
本选项设定是否要将执行的错误讯息显示在使用者的浏览器上。

doc_root string
设定伺服器的文件及 PHP 档案放置的根目录。

engine boolean
本选项需要使用阿帕契的模组方式使用 PHP。可设定是否要使用 PHP 引擎。在 httpd.conf 中加入 php3_engine on/off 亦可设定某目录或某虚拟站台是否要用 PHP 解译器。

error_log string
本选项用来设定错误记录档。在 UNIX 系统上参数 string 即为档名。Windows NT 会将记录记在事件检视器的日志之中。Windows 95/98 则不支援系统记录。

error_reporting integer
本选项用来设定系统记录的等级。参数 integer 即为等级的级数旗标，可以加在一起，内定值为 7，见下表
级数 | 说明
1 | 一般的错误
2 | 一般的警告
4 | 剖析错误
8 | 非关键的警告

open_basedir string
本选项用来设定提供 PHP 存取的最底层目录。从该指定目录之下的档案或目录，PHP 程式方可存取。使用本选项主要是为了系统安全性的考量。参数 string 即为欲限制的最底层目录节点。值得注意的是在 UNIX 系统中，若该节点之下的档案或目录有符号链结 (symbolic link)，则可能会让使用本选项的目的打折，因此在目录的设计上考量，也是 Webmaster 的重要任务。内定值是所有档案均可存取。在 PHP 3.0.7 版之后，可以设定多个底层目录。

gpc_order string
设定 GET/POST/COOKIE 三种模组的顺序及规则。参数 string 即为欲设定的规则，例如：设定成 "GP" 表示忽视 cookie，并在存取方法 (method) 相同时，以 POST 取代 GET。

ignore_user_abort string
内定值为 Off。用来设定当传输未完成时，使用者端断线是要继续处理。

include_path string
为 PHP 程式中 require、include 及 fopen_with_path 等函式的档案搜寻路径。在 UNIX 或 Windows 中的斜线方向不同。

log_errors boolean
指定程式错误时是否要记录在 log 档中。

magic_quotes_gpc boolean
设定 GET/POST/COOKIE 三种模组的特殊字元，包含单引号、双引号、反斜线、及空字元 (NUL) 是否要自动加入反斜线当溢出字元。

magic_quotes_runtime boolean
设定传回资料是否自动加入反斜线当溢出字元。

magic_quotes_sybase boolean
设定 sybase 资料中单引号要自动加上反斜线当溢出字元。

max_execution_time integer
设定程式最久执行时间。单位是秒。

memory_limit integer
设定程式最多使用多少记忆体。

short_open_tag boolean
设定是否使用短的 PHP 标记 (<? ?>)。若不使用，则必须要用 <?php 作为程式的开头，若要使程式合乎 XML 的标准则要关闭本功能。

track_errors boolean
打开本选项可使最后的错误讯息跟着全域变数 $php_errormsg。

track_vars boolean
打开本选项可让使用者输入的字串自动剖析到变数之中，而不用自己处理。

upload_tmp_dir string
指定上传档案暂存路径。

user_dir string
指定使用者自家目录的路径。

warn_plus_overloading boolean
若打开本选项，字串间就只能用英文的句号 (.) 连结，而不能用加号 (+) 连结字串。

SMTP string
在 Windows 系列作业系统中，用来指定 SMTP 伺服器，供 mail 函式使用。参数 string 为 SMTP 伺服器名字。

sendmail_from string
设定 "From: " 字串供 Windows 系列作业系统使用 mail 函式。

sendmail_path string
设定 sendmail 程式的放置路径。例如 /usr/sbin/sendmail。

safe_mode boolean
设定 PHP 在安全模式下执行。

safe_mode_exec_dir string
设定安全模式程式执行的路径。

debugger.host string
指定远端除错的伺服器名称，可以是 IP 或 Domain Name。

debugger.port string
设定远端除错伺服器的埠号 (port)。

debugger.enabled boolean
设定是否可以为除错模式。

enable_dl boolean
本选项要使用阿帕契模组 (Apache module) 的方式才有效。用来设定 PHP 的 dl() 函式可否作用。当系统处于安全模式 (safe-mode) 时，本选项 enable 也无法使用 dl() 函式。

extension_dir string
设定动态函式的路径。

extension string
PHP 启动时所要载入的动态扩充功能。

mysql.allow_persistent boolean
设定是否允许 MySQL 资料库长期连线 (persistent connections)，会影响 mysql_pconnect() 函式。

mysql.max_persistent integer
设定每个处理程序最多保持几个 MySQL 长期连线。

mysql.max_links integer
设定每个处理程式最多开几个 MySQL 连线，包括长期连线。

msql.allow_persistent boolean
设定是否允许 mSQL 资料库长期连线 (persistent connections)，会影响 msql_pconnect() 函式。

msql.max_persistent integer
设定每个处理程序最多保持几个 mSQL 长期连线。

msql.max_links integer
设定每个处理程式最多开几个 mSQL 连线，包括长期连线。

pgsql.allow_persistent boolean
设定是否允许 Postgres 资料库长期连线 (persistent connections)，会影响 pg_pConnect() 函式。

pgsql.max_persistent integer
设定每个处理程序最多保持几个 Postgres 长期连线。

pgsql.max_links integer
设定每个处理程式最多开几个 Postgres 连线，包括长期连线。

sybase.allow_persistent boolean
设定是否允许 Sybase 资料库长期连线 (persistent connections)，会影响 sybase_pconnect() 函式。

sybase.max_persistent integer
设定每个处理程序最多保持几个 Sybase 长期连线。

sybase.max_links integer
设定每个处理程式最多开几个 Sybase 连线，包括长期连线。

sybct.allow_persistent boolean
设定是否允许 Sybase-CT 资料库长期连线 (persistent connections)，内定值是开启的。

sybct.max_persistent integer
设定每个处理程序最多保持几个 Sybase-CT 长期连线。内定值为 -1 表示无限制。

sybct.max_links integer
设定每个处理程式最多开几个 Sybase-CT 连线，包括长期连线。内定值为 -1，表示没有限制。

sybct.min_server_severity integer
设定 Sybase-CT 伺服器错误报告的最少笔数。内定值为 10。

sybct.min_client_severity integer
设定 Sybase-CT 客户端错误报告的最少笔数。内定值为 10。

sybct.login_timeout integer
设定 Sybase-CT 最久可以使用的登入时间。内定值为 1 分钟。

sybct.timeout integer
设定 Sybase-CT 的 query 操作时间限制。内定值为无限制。

sybct.hostname string
设定 Sybase-CT 可连线机器名称。内定值不设限

ifx.allow_persistent boolean
设定是否允许 Informix 资料库长期连线 (persistent connections)，会影响 ifx_pconnect() 函式。

ifx.max_persistent integer
设定每个处理程序最多保持几个 Informix 长期连线。

ifx.max_links integer
设定每个处理程式最多开几个 Informix 连线，包括长期连线。

ifx.default_host string
设定 Informix 内定连线的伺服器名称，供 ifx_connect() 或 ifx_pconnect() 函式使用。

ifx.default_user string
设定 Informix 内定连线的使用者帐号，供 ifx_connect() 或 ifx_pconnect() 函式使用。

ifx.default_password string
设定 Informix 内定连线的使用者密码，供 ifx_connect() 或 ifx_pconnect() 函式使用。

ifx.blobinfile boolean
设定 Informix 长位元物件模式，0 表在记忆体；1 表在档案中。亦可以在 PHP 程式中使用 ifx_blobinfile_mode() 函式来修改。

ifx.textasvarchar boolean
设定 Informix 文字模式内定值，0 表传回 blob 的代码；1 表传回 varchar 字串。亦可在 PHP 程式中使用 ifx_textasvarchar() 函式来修改设定。

ifx.byteasvarchar boolean
设定 Informix 位元组模式内定值，0 表传回 blob 的代码；1 表传回 varchar 字串。亦可在 PHP 程式中使用 ifx_byteasvarchar() 来修改设定。

ifx.charasvarchar boolean
设定 Informix 传回字串的字尾空格是否要自动去除。

ifx.nullformat boolean
设定 NULL 栏位的传回方式，true 表示传回字串 NULL，false 表格传回字串 ""。亦可在 PHP 程式中以 ifx_nullformat() 修改。

bcmath.scale integer
设定 BC 高精确度函式库的小数点位数。

browscap string
设定浏览器的开档能力名。

uodbc.default_db string
设定 ODBC 内定连线的资料库名称，供 odbc_connect() 或 odbc_pconnect() 函式使用。

uodbc.default_user string
设定 ODBC 内定连线的使用者帐号，供 odbc_connect() 或 odbc_pconnect() 函式使用。

uodbc.default_pw string
设定 ODBC 内定连线的使用者密码，供 odbc_connect() 或 odbc_pconnect() 函式使用。

uodbc.allow_persistent boolean
设定是否允许 ODBC 资料库长期连线 (persistent connections)，会影响 odbc_pconnect() 函式。

uodbc.max_persistent integer
设定每个处理程序最多保持几个 ODBC 长期连线。

uodbc.max_links integer
设定每个处理程式最多开几个 ODBC 连线，包括长期连线。

以下和 session 有关的设定值，都在 PHP 4.x 以上的版本方支援。在 php.ini 的设定档中。

session.save_handler
定义 session 储存资料的档案名称。内定值为 files。

session.save_path
定义 session 储存资料的档案路径。内定值为 /tmp。

session.name
设定 session 所使用的 cookie 名称。内定值为 PHPSESSID。

session.auto_start
设定 session 是否自动开启。内定值为 0 (否)。

session.lifetime
设定 cookie 送到浏览器后的保存时间，单位为秒。内定值为 0，表示直到浏览器关闭。

session.serialize_handler
定义连续/解连续资料的标头，本功能只有 WDDX 模组或 PHP 内部使用。内定值为 php。

session.gc_probability
设定每笔要求回应时的废物蒐集 (gc, garbage collection) 处理机率。内定值为 1。

session.gc_maxlifetime
设定废物被清除前的存活秒数。

session.extern_referer_check
决定参照到客户端的 Session 代码是否要删除。有时在安全或其它考量时，会设定不删除。内定值为 0。

session.entropy_file
设定 session 代码建立时，使用外部高熵值资源或档案来建立，例如 UNIX 系统上的 /dev/random 或 /dev/urandom。

session.entropy_length
设定 session 从高熵值资源读取的位元组数。内定值为 0。

session.use_cookies
设定是否要将 session 变成 cookie 存在使用者端。内定值为 1，表是开启本功能。


如何写作 PHP 程式

若只会用 Frontpage、Dreamweaver 的所见即所得编辑模式来写网页，而完全不懂 HTML 的语法，恐怕要先下点功夫了解 HTML 语法，才能顺利的写 PHP 程式了。若早就极度了解 HTML 幕后排版语言的语法，那么应该可以马上开始 PHP 的程式写作了。在 PHP 这种后端伺服器的程式语言，下苦功去学习 HTML 是写作的必备条件。

对熟悉 Windows 系列作业平台的使用者，有套软体倒是在开发 PHP 程式上是蛮方便的，就是 PHP Editor，若对这软体有兴趣，不妨到 http://www.soysal.com/PHPEd 下载最新的版本。同时还需要下载 PHP 程式 Win32 的版本。安装妥 PHP Win32 版后，在 PHP Editor 中设定好 PHP Win32 的路径，就可以让您轻松地开发 PHP 程式了。至于在写作 PHP 程式的工作平台上，有没有 Web 伺服器倒是不重要，因为在 PHP Editor 的环境中写好的程式，按下执行的键后，由 PHP Editor 直接将所写的 PHP 程式送给 PHP Win32，并将执行结果处理后，呈现在使用者的面前。

若您和笔者一样，对 Linux/UNIX 很偏执，或许可以尝试使用 Bluefish: 蓝鱼 PHP 写作工具，只要装好 Linux 及 X-Window 之后就可以使用了。要使用中文的话，需要在 X-Window 加入中文的字型及输入法，要方便的话，使用 RedHat 加上 CLE 中文支援就好了。

假使您已是老 Linux/UNIX 了，也不喜欢使用这些专门的开发工具。相信您对 vi 或是 Emacs 一定相当熟悉，那么就在装妥 Web 伺服器和 PHP 程式后，直接用 vi 或 Emacs 写 PHP 程式就可以了，并且可以直接看到执行的真正结果，和资料库或是其它的伺服程式连结，也不会有什么问题。这种「所写即所得」的方式，岂不痛快!!


hello, world

在 K&R 二教授的经典名著 The C Programming Language 一书中的 "hello, world" 几乎已经变成了所有程式语言的第一个范例。因此，在这儿也用 PHP 来写个最基本的 "hello, world" 程式。

<html>
<head>
<title>First program</title>
</head>
<body>
<?php
echo "hello, world\n";
?>
</body>
</html>

这十行程式在 PHP 中不需经过编译等复杂的过程，只要将它放在设定好可执行 PHP 语法的伺服器中，将它存成档案 helloworld.php 好了。在用户的浏览器端，只要在 Location: 输入 http://some.hostname/helloworld.php，就可以在浏览器上看到 hello, world 字串出现。

我们可以看到，这个程式只有三行有用，其它六行都是标准的 HTML 语法。而它在传回浏览器时和 JavaScript 或 VBScript 完全不一样，PHP 的程式没有传到浏览器，只在浏览器上看到短短的几个字 "hello, world"。

在第六行及第八行，分别是 PHP 的开始及结束的嵌入符号。第七行才是伺服器端执行的程式。在这个例子中，"\n" 和 C 语言的表示都一模一样，代表换行的意思。在第一章也有介绍过 PHP 是混合多种语言而成，而 C 正是含量最多的语言。在一个叙述式结束后，要加上分号代表结束。

图二: 在浏览器上看到 PHP 写的 hello, world 程式


嵌入方法

要将 Homepage 中放入 PHP，有以下数种做法

  1. <? echo ("这是一个 PHP 语言的嵌入范例\n"); ?>

  2. <?php echo("这是第二个 PHP 语言的嵌入范例\n"); ?>

  3. <script language="php">
    echo ("这是类似 JavaScript 及 VBScript 语法
    的 PHP 语言嵌入范例"    );
    </script>

  4. <% echo ("这是类似 ASP 嵌入语法的 PHP 范例"); %>

其中第一种及第二种是最常用的二个方法，在小于符号加上问号后，可以加也可以不加 php 三个字，之后就是 PHP 的程式码。在程式码结束后，加入问号大于二符号就可以了。第三种方法对熟悉 Netscape 伺服器产品的 Webmaster 人员而言，有相当的亲切感，它是类似 JavaScript 的写作方式。而对于从 Windows NT 平台的 ASP 投向 PHP 的使用者来说，第四种方法似曾相似，只要用 PHP 3.0.4 版本以后的伺服器都可以用小于百分比的符号开始，以百分比大于结束 PHP 的区段，但想用第四种方法的使用者别忘了在 php.ini 加入 asp_tags 或是在编译 PHP 时加入 --enable-asp-tags 的选项，才能使第四种方法有效。建议少用第四种方法，当 PHP 与 ASP 原始码混在一起时就麻烦了。

其实，在写作 PHP 的程式最好的方法，就是先处理好纯 HTML 格式的 Homepage 文件之后，再将需要变数或其它处理的地方改成 PHP 程式。这种方法，可以让您在开发上达到事半功倍的效果。


引用档案

PHP 最吸引人的特色之一大概就是它的引用档案了。用这个方法可以将常用的功能写成一个函式，放在档案之中，然后引用之后就可以呼叫这个函式了。

引用档案的方法有二种：require 及 include。二种方式提供不同的使用弹性。

require 的使用方法如 require("MyRequireFile.php"); 。这个函式通常放在 PHP 程式的最前面，PHP 程式在执行前，就会先读入 require 所指定引入的档案，使它变成 PHP 程式网页的一部份。常用的函式，亦可以这个方法将它引入网页中。

include 使用方法如 include("MyIncludeFile.php"); 。这个函式一般是放在流程控制的处理区段中。PHP 程式网页在读到 include 的档案时，才将它读进来。这种方式，可以把程式执行时的流程简单化。

在 PHP 的官方网站中，每页都可以看到原始程式，更是处处看到这二种引入档案的方法。


程式注解

在 PHP 的程式中，加入注解的方法很灵活。可以使用 C 语言、C++ 语言或者是 UNIX 的 Shell 语言的注解方式，而且也可以混合使用。这可以让每个写 PHP 网页程式的 Webmaster 或 Programmer 发展出属于自己的写作风格。

<?php
echo "这是第一种例子。\n"; // 本例是 C++ 语法的注解
/* 本例采用多行的
注解方式 */
echo "这是第二种例子。\n";
echo "这是第三种例子。\n"; # 本例使用 UNIX Shell 语法注解
?>

不过在使用多行注解时请注意，不能让注解陷入巢状回圈当中，否则会引起错误。

<?php
  /*
  echo "这是错误的示范。\n"; /* 巢状注解会引起问题 */
  */
?>


常数型态

PHP 在常数中定义了以下一些常数。

__FILE__
这个内定常数是 PHP 程式档名。若引用档案 (include 或 require)则在引用档案内的该常数为引用档案名，而不是引用它的档案名。

__LINE__
这个内定常数是 PHP 程式行数。若引用档案 (include 或 require)则在引用档案内的该常数为引用档案的行，而不是引用它的档案行。

PHP_VERSION
这个内建常数是 PHP 程式的版本，如 '3.0.8-dev'。

PHP_OS
这个内建常数指执行 PHP 剖析器的作业系统名称，如 'Linux'。

TRUE
这个常数就是真值 (true)。

FALSE
这个常数就是伪值 (false)。

E_ERROR
这个常数指到最近的错误处。

E_WARNING
这个常数指到最近的警告处。

E_PARSE
本常式为剖析语法有潜在问题处。

E_NOTICE
这个常式为发生不寻常但不一定是错误处。例如存取一个不存在的变数。

这些 E_ 开头形式的常数，可以参考 error_reporting() 函式，有更多的相关说明。

当然在程式写作时，以上的内定常数是不够用。define() 的功能可以让我们自行定义所需要的常数。见下例

<?php
define("COPYRIGHT", "Copyright &copy; 2000, netleader.126.com");
echo COPYRIGHT;
?>


变数型态

PHP 的变数型态不多，有以下五种：

  • string
  • integer
  • double
  • array
  • object
string 即为字串变数，无论是单一字元或数千字的字串都是使用这个变数型态。值得注意的是要指定字串给字串变数，要在头尾加上双引号 (例如: "这是字串")。在欲让字串换行时，可使用溢出字元，也就是反斜线加上指定的符号，若是 \x 加上二位数字，如 \xFE 即表十六进位字元，详见下表：

符号 | 意义
\" | 双引号
\\ | 反斜线
\n | 换行
\r | 送出 CR
\t | 跳位 (TAB)

integer 为整数型别。在 32 位元的作业系统中，它的有效范围是 -2,147,483,648 到 +2,147,483,647。要使用 16 进位整数可以在面加 0x。

double 为浮点数型别。在 32 位元的作业系统中，它效范围是 1.7E-308 到 1.7E+308。

array 为阵列变数，可以是二维、三维或者多维阵列，其中的元素也很自由，可以是 string、integer 或者 double，甚至是 array。

object 为物件变数，目前在 PHP 中的物件不多，若论及物件，Microsoft 的 ASP 物件仍然较 PHP 的内定物件多，相信这有赖大家的努力。不过话又说回来，Web CGI 程式要求的是效率，以完全物件导向的方式，恐怕使用者在浏览时也会因为程式执行速度慢而很不耐烦吧。

要使用变数，只要在英文字串前面加个钱号 $ 即可，目前变数名称仍不能使用中文。至于变数的大小写是不一样的，对开发 PHP 程式的 TEAM 来说，最好使用相同的变数使用风格，以免届时因为变数大小的问题，花许多无谓的时间去找寻问题点，那就麻烦了。

以下为变数的使用范例：

$mystring = "我是字串";
$WilsonPeng = "真是认真的作者";
$NewLine = "换行了\n";

$int1 = 38;
$int2 = 49;
$hexint = 0x10;

$float1 = 1.732;
$float2 = 1.4E+2;

$MyArray1 = array("子", "丑", "寅", "卯");
$MyArray2 = array(
"地支" => array("子", "丑", "寅", "卯"),
"生肖" => array("鼠", "牛", "虎", "兔"),
"数字" => array(1, 2, 3, 4)
);

物件的使用上就比较麻烦了，要先宣告类别，甚至必须先要方法，方可使用物件，如下例：

class foo {
function do_foo () {
echo "Doing foo.";
}
}

$bar = new foo;
$bar -> do_foo ();

更多有关物件的讨论，参考 物件

此外，还有布林值 (boolean)，通常 1 即为 true，0 为 false。

在变数之间，若要转换型态，在 PHP 程式中是很自由的，直接就拿来用了，不必经过特殊的转换函式。当然，浮点数转成整数就有点牵强了，不过可以将浮点数转成字串，也是很好处理。


变数的使用

就像大部份的结构化程式，有所谓的全域变数与区域变数，PHP 在这方面也是有相同的处理方式。

在 PHP 的程式执行时，系统会在记忆体中保留一块全域变数的区域。实际运用时，可以透过 $GLOBALS["变数名称"] 将需要的变数取出。在使用者自定的函式或程序中，就可以用 $GLOBALS 阵列取出需要的变数。当然别忘了 PHP 的变数有分大小写，搞错了大小写可是叫一百年，变数也不会出来。

$GLOBALS 阵列是 PHP 程式中比较特殊的变数，不必宣告，系统会自动匹配相关的变数在里面。在函式中，也不必管 $GLOBALS 阵列是否已经做全域宣告，就可以直接使用了。

和 $GLOBALS 变数类似的还有 $php_errormsg 字串变数。若 PHP 的设定档 (php.ini/php3.ini) 中的 track_errors 选项打开的话，会有全域变数 $php_errormsg 可以看到错误的讯息。

在 PHP 中，全域变数的有效范围 (scope) 仅限于主要程式中，不会影响到函式中同名的变数，也就是全域变数与区域变数互不侵犯。若要变数能通透到函式中，就要用到 $GLOBALS 阵列或是使用 global 宣告。

例如，在自行开发的函式中，要取得目前执行 PHP 程式页面的档名，就可以用 $GLOBALS["PHP_SELF"] 取出 $PHP_SELF 的值。

<?php
// 本程式使用 $GLOBALS 阵列
function myfunc() {
echo $GLOBALS["PHP_SELF"];
}
myfunc();
?>

下面是错误的示范，请勿模仿，上面的才是正确的示范。

<?php
// 这是错误的示范
function errfunc() {
echo $PHP_SELF;
}
errfunc();
?>

但是这个错误的示范要是改成下例就没问题了

<?php
// 本程式使用全域宣告
function myfunc() {
global $PHP_SELF;
echo $PHP_SELF;
}
myfunc();
?>

在变数前面加上 global 的名称，就是宣告该变数为全域变数。用这种方式，就不需使用 $GLOBALS 阵列，也能让变数进入自行开发的函式中。

接下来先看静态变数的例子

<?php
// 静态变数的例子
function myfunc() {
static $mystr;
$mystr.="哈";
echo $mystr."<br>\n";
}
myfunc(); // 哈
myfunc(); // 哈哈
myfunc(); // 哈哈哈
?>

函式在执行时所产生的变数，在函式结束时就消失了，有时因为程式的需要，函式在回圈中，当不希望变数在每次执行完函式就消失的话，静态变数 (static variable) 就派上用场了。上例中，使用 $mystr 变数之前，先在变数前面加上 static，即表示变数 $mystr 是静态变数，当每次执行 myfunc() 函式时，$mystr 的值会一直增加，每执行一次就多一个哈字。若将 static 的静态变数宣告拿掉，就没办法累加哈字了。

<?php
// 不是静态变数的例子 (错误的)
function myfunc() {
$mystr.="哈";
echo $mystr."<br>\n";
}
myfunc(); // 哈
myfunc(); // 哈
myfunc(); // 哈
?>

再看一个比较实际的例子，它是处理表格的颜色，让隔行的颜色不同。

<?php
function TdBackColor() {
static $ColorStr;
if ($ColorStr=="808080") {
$ColorStr="c0c0c0";
} else {
$ColorStr="808080";
}
return($ColorStr);
}
echo "<table border=1>\n";
for ($i=0; $i<10; $i++) {
$ColorStr=TdBackColor();
echo "<tr><td bgcolor=".$ColorStr.">这是第".$i."行</td></tr>\n";
}
echo "</table>";
?>

PHP 的变数使用技巧上，最令人觉得不可思议的则是变数的变数 (variable variable)。这是充分利用 PHP 特性玩出的特殊技巧

<?php
$a = "Hello";
$$a = "world";
echo "$a, $hello"; // Hello, world
echo "$a, {$a}"; // 也是 Hello, world
?>

mdean@kcnet.com 举出一个更绝的例子 (24-Apr-1999)，他称为变数的函式 (variable function)

<?php
function myCallbackFunction()
{
print("Hello from callback");
}

function myFunction($callback)
{
$callback();
}
// call to myFunction passing callback
// function as parameter
myFunction("myCallbackFunction");
?>

至于使用者在 FORM 中输入的资料，要怎么处理呢？要是在 PHP 的设定档中，track_vars 设为 On 时，直接使用变数名字就好了。如下例，next.php 在执行时，系统会自动产生二个变数 $username 及 $sex，直接使用就好了，比起传统的 CGI 要自己剖析，PHP 实在是太神奇了。

<form action=next.php method=post>
姓名: <input type=text name="username"><br>
性别: <input type=text name="sex"><br>
<input type=submit>
</form>

由于 PHP 许多语法都是 C 语言的翻版，故 PHP 在使用变数时，随时都可以使用新的变数，只要在使用前将变数初始化就好了，不必像 Pascal 语言那样严谨，所有要使用的变数都要事先宣告。这当然有好处与坏处：好处是使用方便、自由；坏处就是常常因这些自由而付出相当大的代价除错。在程式码短的 PHP 程式当然不成问题，当程式在数百数千行，甚至 include 或 require 好几层之后，问题就浮现出来了。无论如何，保持良好的写作习惯才是避免浪费青春的方法。


运算符号

运算符号可以用来处理数字、字串及其它需要比较运算的条件。PHP 的运算符号和 C 语言的运算符号与很类似，对于有经验的程式设计人员，应可以很顺利的掌握 PHP 的运算符号。

不同的运算符号，其实还是有优先顺序，就像小时候在学数学时，老师会教：先乘除、后加减。在 PHP 的运算优先顺序可以参考下面的表格，在混合式的情形下，愈往下表示优先权愈高。至于符号代表的意义，散见于以下的章节中。

运算符号 | 结合规则
, | 左至右
or | 左至右
xor | 左至右
and | 左至右
.= &= |= /= %= ^= = += -= *= | 左至右
? : | 左至右
|| | 左至右
&& | 左至右
| | 左至右
^ | 左至右
& | 左至右
== != | 不限
< <= >= > | 不限
<< >> | 左至右
+ - . | 左至右
* / % | 左至右
! ~ ++ -- @ | 右至左
[] | 右至左

就像先哲说的：物有本末、事有终始，知所先后，则近道矣，在运算时只要照着运算优先顺序写出来的程式，应该不会发生结果和预期不同的情形。在写作时多注意细节，可以减少除错的痛苦！


算术运算

算术运算 (arithmetic operators) 符号，就是用来处理四则运算的符号，这是最简单，也最常用的符号，尤其是数字的处理，几乎都会使用到算术运算符号。

符号 | 意义
+ | 加法运算
- | 减法运算
* | 乘法运算
/ | 除法运算
% | 取余数
++ | 累加
-- | 递减

以下为简单的算术运算范例

<?php
$a = 8;
$b = 2;
$c = 3;
echo $a+$b."<br>\n";
echo $a-$b."<br>\n";
echo $a*$b."<br>\n";
echo $a/$b."<br>\n";
echo $a%$c."<br>\n";
$a++;
echo $a."<br>\n";
$c--;
echo $c;
?>


字串运算

字串运算 (string operator) 的运算符号只有一个，就是英文的句号 .。它可以将字串连接起来，变成合并的新字串。

以下是字串运算的例子

<?php
$a = "PHP 4";
$b = "功能强大";
echo $a.": ".$b;
?>


设定运算

设定运算 (assignment operator) 有时会让人搞得一头雾水，不过它可以让程式更精简，增加程式的执行效率。

符号 | 意义
= | 将右边的值连到左边
+= | 将右边的值加到左边
-= | 将右边的值减到左边
*= | 将左边的值乘以右边
/= | 将左边的值除以右边
%= | 将左边的值对右边取余数
.= | 将右边的字串加到左边

<?php
$a = 5;
$a += 2; // 即 $a = $a + 2;
echo $a."<br>\n";
$b = "哇";
$b .= "哈"; // $b = "哇哈";
$b .= "哈"; // $b = "哇哈哈";
echo "$b<br>\n";
?>


位元运算

PHP 的位元运算子 (bitwise operators) 共有六个，提供数字做一些快速而低阶的运算。欲了解更多有关位元运算的资讯，可以参考离散数学方面的书籍。

符号 | 意义
& | 且 (And)
| | 或 (Or)
^ | 互斥 (Xor)
<< | 向左移位
>> | 向右移位
~ | 取 1 的补数


逻辑运算

逻辑运算 (logical operators) 通常用来测试真假值。最常见到的逻辑运算就是回圈的处理，用来判断是否该离开回圈或继续执行回圈内的指令。

符号 | 意义
< | 小于
> | 大于
<= | 小于或等于
>= | 大于或等于
== | 等于
!= | 不等于
&& | 而且 (And)
and | 而且 (And)
|| | 或者 (Or)
or | 或者 (Or)
xor | 互斥 (Xor)
! | 不 (Not)

<?
$a = 5;
if ($a != 5) {
echo "&#036;a 不是 5";
} else {
echo "&#036;a 是 5";
}
?>


其它运算符号

除了上述的运算符号之外，还有一些运算符号难以归类。

符号 | 意义
$ | 变数
& | 变数的指标 (加在变数前)
@ | 不显示错误讯息 (加在函数前)
-> | 物件的方法或者属性
=> | 阵列的元素值
? : | 三元运算子

其中比较特殊的是三元运算子 ? :，以下例来解释

(expr1) ? (expr2) : (expr3);

若 expr1 的运算结果为 true，则执行 expr2；否则执行 expr3。实际上它有点类以 if...else 回圈，但可以让程式较精简有效率。


流程控制

由于 PHP 的大部份语法都是承袭了 C 语言的语法，因此，在流程控制方面，也是有着和 C 语言极类似的回圈。PHP 的回圈不像 ASP 般可以使用 goto 的 BASIC 语法，PHP 是结构化的程式语言，流程的设计上有一定的规定，而不能用 BASIC 的观念来乱跳到别的区段中。

PHP 的语法没有像 C 语言的 main(){} 区段，其实整个 PHP 主页面 (就是浏览器输入的 URL) 就是 main(){} 区段，这点和其它的解译程式，如 Prel、Python、Shell Script 倒是很像。

在流程的区段分隔符号上，都是使用 { 当作区段的开头，用 } 当作结尾，和 C 语言相同。不过 C 可以定义 begin 当开头、end 当结尾 (像 Pascal)，而 PHP 中不能做这种特殊的定义。

而 PHP 语法中在每道指令结束时都要加上分号 ;，但是在区段结尾符号 } 后面不用加上分号结束。


if..else 回圈

if..else 回圈有三种构造

第一种是只有用到 if 条件，当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下：

if (expr) {
  statement
}

其中的 expr 为判断的条件，通常都是用逻辑运算符号 (logical operators) 当判断的条件。而 statement 为符合条件的执行区段程式，若程式只有一行，可以省略大括号 {}。

范例：本例省略大括号。

<?php
if (date("D") == "Sat") echo "周末了，狂欢去";
?>

范例：本例的执行区段有三行，不可省略大括号。

<?php
if (file_exists("/usr/local/lib/php3.ini")) {
echo "以下是 PHP3 的设定档<p><pre>\n";
readfile("/usr/local/lib/php3.ini");
echo "</pre>\n";
}
?>

第二种是除了 if 之外，加上了 else 的条件，可解释成 "若发生了某事则怎样处理，否则该如何解决"。语法如下

if (expr) {
  statement1
} else {
  statement2
}
范例：上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令，因此不用加上大括号。

<?php
$f="/usr/local/lib/php3.ini";
if (file_exists($f)) {
echo "以下是 PHP3 的设定档<p><pre>\n";
readfile($f);
echo "</pre>\n";
} else echo "很抱歉，找不到 $f";
?>

第三种就是巢状的 if..else 回圈，通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。

直接看下面的例子

<?php
if ($a > $b) {
echo "a 比 b 大";
} elseif ($a == $b) {
echo "a 等于 b";
} else {
echo "a 比 b 小";
}
?>

上例只用二层的 if..else 回圈，用来比较 a 和 b 二个变数。实际要使用这种巢状 if..else 回圈时，请小心使用，因为太多层的回圈容易使设计的逻辑出问题，或者少打了大括号等，都会造成程式出现莫名其妙的问题。


do..while 回圈

do..while 是重复叙述的回圈，可以分成二种模式。

最单纯的就是只有 while 的回圈。用来在指定的条件内，不断地重覆指定的动作。语法如下

while (expr) {
  statement
}

其中的 expr 为判断的条件，通常都是用逻辑运算符号 (logical operators) 当判断的条件。而 statement 为符合条件的执行区段程式，若程式只有一行，可以省略大括号 {}。

下例很有趣，要电脑的浏览器出现十次 "以后不敢了" 的字串，前面并加上数字，表示说了第几次不敢了。(感觉好像是 Web Server 做错事被处罚)

<?php
$i = 1;
while ($i <= 10) {
print $i++;
echo ". 以后不敢了<br>\n";
}
?>

while 可以不用大括号来包住执行区段，而使用冒号加上 endwhile。见下例

<?php
$i = 1;
while ($i <= 10):
print $i++;
echo ". 以后不敢了<br>\n";
endwhile;
?>

另外一种 do..while 回圈则先执行，再判断是否要继续执行，也就是说回圈至少执行一次，有点像是先斩后奏的方法。这种的回圈，和单用 while 是不同的 (单用 while 是先判断再处理)。若读者熟 Pascal 语言的话，会发现 do..while 回圈像是 Pascal 的 repeat..until 回圈。

do..whilte 的语法如下

do {
  statement
} while (expr);


for 回圈

for 回圈就单纯只有一种，没有变化，它的语法如下

for (expr1; expr2; expr3) {
  statement
}

其中的 expr1 为条件的初始值。expr2 为判断的条件，通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份，用来改变条件，供下次的回圈判断，如加一..等等。而 statement 为符合条件的执行区段程式，若程式只有一行，可以省略大括号 {}。

下例是用 for 回圈写的 "以后不敢了" 的例子，可以拿来和用 while 回圈的比较。

<?php
for ($i=1; $i<=10; $i++) {
echo "$i. 以后不敢了<br>\n";
}
?>

从上例中，可以很明显的看到，用 for 和用 while 的不同。实际应用上，若回圈有初始值，且都要累加(或累减)，则使用 for 回圈比用 while 回圈好。例如将资料从资料库取出，可能用 for 回圈会比用 while 回圈适合?


switch 回圈

switch 回圈，通常处理复合式的条件判断，每个子条件，都是 case 指令区段。在实作上若使用许多类似的 if 指令，可以将它综合成 switch 回圈。

语法如下

switch (expr) {
  case expr1:
    statement1;
    break;
  case expr2:
    statement2;
    break;
    :
    :
  default:
    statementN;
    break;
}

其中的 expr 条件，通常为变数名称。而 case 后的 exprN，通常表示变数值。冒号后则为符合该条件要执行的区段。注意要用 break 跳离回圈。

<?php
switch (date("D")) {
case "Mon":
echo "今天星期一";
break;
case "Tue":
echo "今天星期二";
break;
case "Wed":
echo "今天星期三";
break;
case "Thu":
echo "今天星期四";
break;
case "Fri":
echo "今天星期五";
break;
default:
echo "今天放假";
break;
}
?>

很明显的，上述的例子用 if 回圈就很麻烦了。当然在设计时，要将出现机率最大的条件放在最前面，最少出现的条件放在最后面，可以增加程式的执行效率。上例由于每天出现的机率相同，所以不用注意条件的顺序。


其它的流程控制

除了上面的流程控制指令之外，尚有 break 及 continue 二个流程控制指令。

break 用来跳出目前执行的回圈，如下例

<?php
$i = 0;
while ($i < 10) {
if ($arr[$i] == "stop") {
break;
}
$i++;
}
?>

continue 即刻停止目前执行回圈，并回到回圈的条件判断处，见下例

<?php
while (list($key,$value) = each($arr)) {
if ($key % 2) { // 略过偶数
continue;
}
do_something_odd ($value);
}
?>

而 BASIC 常用的 goto 在 C 及 Borland Pascal 中或许可以使用。但在 PHP 中，由于它的 Web Server Script 特性以及结构化的组成，并不能在 PHP 中使用 goto 回圈指令?


函式

在 PHP 中，允许程式设计者将常用的流程或者变数等元件，组织成一个固定的格式。也就是说使用者可以自行组合函式或者是物件。

PHP 中的函式 (function) 和 C 语言一样，包括有传回值的及无传回值的，不像 Pascal 分成函式 (function) 和程序 (procedure) 那么复杂。

在函式的名称上，PHP 对于大小写的管制很松散。可以在定义函式时写成大写的名字，而在使用时使用小写的名字。总之，对函式而言，不用管大小写，只要注意名称没有重复就好了。

以下就是函式的使用语法

function myfunc($arg_1, $arg_2, ..., $arg_n) {
  // 执行一些动作
  return $retval;
}

在使用时，在自定的函式名称前要加入 function 的保留字，表示这是定义使用者自定函式。之后的 myfunc 可以是任何的英文字母开头的字串，字串除了开头不能是数字或是底线，在第一个字母后可以是阿拉伯数字或者是底线，当然其它的符号或是中文字不能当函式名。

$arg_1 到 $arg_n 为函式使用的参数，参数之间使用逗号隔开。在参数后的大括号 {}，即为整个函式的区段。函式若有传回值，使用 return 可将值传回。而参数可以事先定义初始值或内定值。有定义内定值的参数在使用函式时可以省略，但一定要放在没有设定内定值参数的后面，否则 PHP 在解析函式时，会出现错误。

另外就是参数的形态，只要参数是 PHP 支援的变数型态都可以使用，无论是阵列、字串、或是整数....等等。传回值也是一样。

下面即为使用内定值及不用内定值的例子

<?php
function myfunc1($arg_1, $arg_2, $arg_3="我是内定字串") {
echo $arg_1+$arg_2;
echo $arg_3."<p>\n";
}

myfunc(3, 4); // 参数 $arg_3 省略。
myfunc(6, 6, "不用内定值") // 输入参数 $arg_3。
?>

参数的值，通常使用传值的方式输入，有时在特别的需求时，可以使用传址的方式，传入参数的指标。方法就是在参数的前面加上 & 符号即可。如下例

<?php
function myfunc2(&$argstr) {
$argstr=ereg_replace("/", "-", $argstr);
}

$today="2000/01/01";
myfunc2($today);
echo $today; // 2000-01-01;
?>


物件

使用者定义的物件，也是学好 PHP 所必备的条件之一。而 PHP 的物件，和其它的物件导向语言比较起来，还算蛮单纯的。PHP 只有类别 (class)、方法 (method)、属性、以及单一继承 (extensions) 等。对不习惯使用 C++、Java、Delphi 等物件导向语言来开发程式的使用者，不妨先阅读一下有关物件导向观念的书，相信可以带来许多的收获。

下面的范例是手推车的物件。可以看到，使用 class 表示它是一个物件类别。在类别中的 function，例如 add_item 则表示该物件的一个方法。方法可以封装物件的实际处理情形，让该物件自己能依封装好的方法来执行一些动作。

程式中的 $this 物件变数也和 $GLOBALS 及 $php_errormsg 二个变数一样，在 PHP 中属于特殊的变数。$this 变数只用在物件类别中，表示物件的本身。

<?php
// 程式名: cart.inc
class Cart {
var $items; // 手推车物件

// 本方法加入 $num 件物品到手推车中 (加到 $artnr 变数)
function add_item ($artnr, $num) {
$this->items[$artnr] += $num;
}

// 本方法从手推车减少 $num 件物品 (从 $artnr 变数减掉)
function remove_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>

要使用手推车可以用类似下例的方式。可以先将每个物件存成 Include 档案，再将它 require 或 include 进来。在宣告变数 $cart 时，要使用 new 的保留字，表示 $cart 使用 Cart 物件。使用 -> 符号，表示执行物件的方法。

<?php
require("cart.inc");
$cart = new Cart;
$cart->add_item("10", 1);
?>

之后再设计有记名的手推车。记名手推车从手推车遗传下来，因此手推车拥有的方法及属性，记名手推车也有，而记名手推车比手推车增加了名字的方法 (或许该称属性较恰当)。

从下例中可以看到，子物件 Named_Cart 使用 extends 来继承其父物件 Cart。虽然 Named_Cart 物件中没有增加物品及减少物品的方法，不过由于遗传的特性，父物件有的东西它都有。

<?php
// 程式名: named_cart.inc
require("cart.inc");
class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this->owner = $name;
}
}
?>

要使用记名手推车物件，请看下面的范例。当然这不算太好的设计，每个子物件都一直 require 它的父物件，会造成伺服器在 I/O 上面的负担。在实作时，可以将整个系列的物件在同一个程式档案中，从最早的袓先物件到最后的子孙物件，也方便日后修正。

<?php
require("named_cart.inc");
$ncart = new Named_Cart; // 建立物件变数
$ncart->set_owner ("CyberRidder"); // 设定物件的记名属性
echo $ncart->owner; // 显示物件的记名属性
$ncart->add_item ("10", 1); // 从父物件遗传的方法也可使用
?>

因此，在 PHP 中使用了 extends 保留字，加上良好的系统分析与完整的 CRC 卡片 (详见物件导向相关书籍) 设计之后，PHP 可变成拥有强大物件能力的 CGI 语言。

PHP 由于是剧本语言 (Script)，因此程式原始码可见，在软体工程中的元件黑箱并不会在目前的 PHP 版本中出现，也就是说，全部的物件其实没有隐藏起它的内容。对于软体业者而言，没有办法保护所谓的软体 IC，站在开放社群而言，反而有原始码是件好事，至于孰是孰非，就很难判定了，不过目前 PHP 还是 Open Source 社群的一份子，或许日后 Zend 引擎可以做到物件封装的功能也不一定。


函式库及函式

本章中的函式涵盖 PHP 3.0.11 版前的所有函式。

函式的格式如下:

函式库名称

函式名称

函式功能简述。

语法: 传回型态 函式名称(型态 参数1, 型态 参数2....);

传回值: 变数型态

函式种类: 例如: 资料库, 网路..等等

内容说明

函式说明详述内容

使用范例

函式的范例 (本栏可能省略)

参考

小节索引 函式名称, 小节索引 函式名称... (本栏可能省略)

以下为 PHP 的相关函式库

  1. Adabas D 资料库连结函式库
  2. 阿帕契伺服器专用函式库
  3. 阵列处理函式库
  4. 拼字检查函式库
  5. BC 高精确度函式库
  6. 历法函式库
  7. ClibPDF 函式库
  8. 日期与时间函式库
  9. DBA 函式库
  10. dBase 格式资料表函式库
  11. dbm 类资料库函式库
  12. 目录管理函式库
  13. 动态连结函式库
  14. 程式执行功能函式库
  15. FDF 函式库
  16. filePro 资料库函式库
  17. 档案系统函式库
  18. HTTP 相关函式库
  19. Hyperwave 伺服器函式库
  20. 图形处理函式库
  21. IMAP 电子邮件系统函式库
  22. PHP 选项及相关资讯函式库
  23. Informix 资料库函式库
  24. InterBase 资料库函式库
  25. LDAP 目录协定函式库
  26. 电子邮件函式库
  27. 数学运算函式库
  28. mcrypt 编码函式库
  29. mhash 杂凑函式库
  30. 杂项函式库
  31. mSQL 资料库函式库
  32. SQL Server 资料库函式库
  33. MySQL 资料库函式库
  34. Sybase 资料库函式库
  35. 网路函式库
  36. NIS 函式库
  37. ODBC 资料库连结函式库
  38. Oracle 8 资料库函式库
  39. Oracle 资料库函式库
  40. Perl 相容语法函式库
  41. PDF 格式档案函式库
  42. PostgreSQL 资料库函式库
  43. 常规表示法函式库
  44. 信号与共享记忆体函式库
  45. Solid 资料库连结函式库
  46. SNMP 网管函式库
  47. 字串处理函式库
  48. URL 处理函式库
  49. 变数处理函式库
  50. Vmailmgr 邮件处理函式库
  51. WDDX 函式库
  52. 压缩档案函式库
  53. XML 剖析函式库
  54. Session 函式库
  55. GNU 记录函式库
  56. FTP 档案传输函式库
  57. MCAL 模组日历存取函式库


Adabas D 资料库连结函式库

本函式库共有 15 个函式

在使用 PHP 与资料库的结合上，用 Adabas D 函式库是较不好的方法，建议使用业界标准的 ODBC 函式库取代 Adabas D 函式库。

ada_afetch: | 取得资料库的传回列。
ada_autocommit: | 开关自动更动功能。
ada_close: | 关闭 Adabas D 连结。
ada_commit: | 更动 Adabas D 资料库。
ada_connect: | 连结至 Adabas D 资料库。
ada_exec: | 执行 SQL 指令。
ada_fetchrow: | 取得传回一列。
ada_fieldname: | 取得栏位名称。
ada_fieldtype: | 取得栏位资料形态。
ada_freeresult: | 释出传回资料的记忆体。
ada_numfields: | 取得栏位数目。
ada_numrows: | 取得传回列数目。
ada_result: | 取得传回资料。
ada_resultall: | 传回 HTML 表格资料。
ada_rollback: | 撤消当前交易。


阿帕契伺服器专用函式库

本函式库共有 4 个函式

顾名思义，若 WEB 伺服器不是使用 Apache 伺服器，则本函式库就派不上用场了。

apache_lookup_uri: | 获得所有的 URI 相关资讯。
apache_note: | 获得及设定阿帕契伺服器的请求纪录。
getallheaders: | 获得所有 HTTP 变数值。
virtual: | 完成阿帕契伺服器的子请求 (sub-request)。


阵列处理函式库

本函式库共有 23 个函式

array: | 建立一个新的阵列。
array_walk: | 让使用者自订函数能处理阵列中的每一个元素。
arsort: | 将阵列的值由大到小排序。
asort: | 将阵列的值由小到大排序。
count: | 计算变数或阵列中的元素个数。
current: | 传回阵列中目前的元素。
each: | 传回阵列中下一个元素的索引及值。
end: | 将阵列的内部指标指到最后的元素。
key: | 取得阵列中的索引资料。
ksort: | 将阵列的元素依索引排序。
list: | 列出阵列中元素的值。
next: | 将阵列的内部指标向后移动。
pos: | 传回阵列目前的元素。
prev: | 将阵列的内部指标往前移动。
range: | 建立一个整数范围的阵列。
reset: | 将阵列的指标指到阵列第一个元素。
rsort: | 将阵列的值由大到小排序。
shuffle: | 将阵列的顺序弄混。
sizeof: | 获知阵列的大小。
sort: | 将阵列排序。
uasort: | 将阵列依使用者自定的函式排序。
uksort: | 将阵列的索引依使用者自定的函式排序。
usort: | 将阵列的值依使用者自定的函式排序。


拼字检查函式库

本函式库共有 4 个函式

在使用这个函式前，需要先到 http://metalab.unc.edu/kevina/aspell 取回所需的拼字检查函式馆 aspell library。

aspell_new: | 载入一个新的字典。
aspell_check: | 检查一个单字。
aspell_check-raw: | 检查一个单字，即使拼错也不改变或修正。
aspell_suggest: | 检查一个单字，并提供拼字建议。


BC 高精确度函式库

本函式库共有 9 个函式

要使用 BC 这个函式库，要在编译 PHP 程式时加入 --enable-bcmath 的选项。

bcadd: | 将二个高精确度数字相加。
bccomp: | 比较二个高精确度数字。
bcdiv: | 将二个高精确度数字相除。
bcmod: | 取得高精确度数字的余数。
bcmul: | 将二个高精确度数字相乘。
bcpow: | 求一高精确度数字次方值。
bcscale: | 设定程式中所有 BC 函式库的内定小数点位数。
bcsqrt: | 求一高精确度数字的平方根。
bcsub: | 将二个高精确度数字相减。


历法函式库

本函式库共有 10 个函式

想要使用历法函式库，需要先编译好 dl/calendar 函式库。PHP 中的历法函式库提供不同的西洋历法转换。转换的基准是凯撒日计数 (Julian Day Count)。所有的历法计算都必需先转换成凯撒日计数，再转成您所需要的历法，更多的资料可以参考这个网址找到 http://genealogy.org/~scottlee/cal-overview.html 。不过对于使用黄帝纪元的中国，这个函式库就还需要扩充才适合了。

JDToGregorian: | 将凯撒日计数 (Julian Day Count) 转换成为格里高里历法 (Gregorian date)。
GregorianToJD: | 将格里高里历法转换成为凯撒日计数。
JDToJulian: | 将凯撒日计数转换成为凯撒历法。
JulianToJD: | 将凯撒历法转换成为凯撒日计数。
JDToJewish: | 将凯撒日计数转换成为犹太历法。
JewishToJD: | 将犹太历法转换成为凯撒日计数。
JDToFrench: | 将凯撒日计数转换成为法国共和历法。
FrenchToJD: | 将法国共和历法转换成为凯撒日计数。
JDMonthName: | 传回月份名。
JDDayOfWeek: | 传回日期在周几。


ClibPDF 函式库

本函式库共有 0 个函式


日期与时间函式库

本函式库共有 12 个函式

checkdate: | 验证日期的正确性。
date: | 将伺服器的时间格式化。
strftime: | 将伺服器的时间本地格式化。
getdate: | 获得时间及日期资讯。
gettimeofday: | 取得目前时间。
gmdate: | 取得目前与 GMT 差后的时间。
easter_date: | 计算复活节日期。
easter_days: | 计算复活节与三月廿一日之间日期数。
mktime: | 取得 UNIX 时间戳记。
gmmktime: | 取得 UNIX 时间戳记的格林威治时间。
time: | 取得目前时间的 UNIX 时间戳记。
microtime: | 取得目前时间的 UNIX 时间戳记的百万分之一秒值。


DBA 函式库

本函式库共有 12 个函式

在柏克莱的 BSD 系列作业系统中，有个简单的资料库结构，它以数个档案组成超小型的资料库系统，架构成抽象层 (abstraction layer) 的 DBA 资料库。

目前 PHP 支援的 DBA 资料库包括

  1. dbm：柏克莱发展的最早期 DBA 资料库。
  2. ndbm：较新且较有弹性的 DBA。
  3. gdbm：GNU 发展的 DBA，ftp://ftp.gnu.org/pub/gnu/gdbm/
  4. db2：由 Sleepycat 软体开发的 DB2 (非 IBM 的 DB2)，http://www.sleepycat.com
  5. cdb：这是 qmail 作者开发快速可靠的 DBA，http://pobox.com/~djb/cdb.html

以下是简单的使用范例，当然在使用前，必须先装好 DBA。

<?php
$id = dba_open("/tmp/test.db", "n", "db2");

if(!$id) {
echo "dba_open failed\n";
exit;
}

dba_replace("key", "This is an example!", $id);

if(dba_exists("key", $id)) {
echo dba_fetch("key", $id);
dba_delete("key", $id);
}

dba_close($id);
?>

dba_close: | 关闭资料库。
dba_delete: | 删除指定资料。
dba_exists: | 检查键是否存在。
dba_fetch: | 取回指定资料。
dba_firstkey: | 取回首笔键值。
dba_insert: | 加入资料。
dba_nextkey: | 取回下笔键值。
dba_popen: | 开启并保持资料库连结。
dba_open: | 开启资料库连结。
dba_optimize: | 最佳化资料库。
dba_replace: | 更动或加入资料。
dba_sync: | 资料库同步化。


dBase 格式资料表函式库

本函式库共有 9 个函式

本函式库可供 Web 伺服器存取 dBase 的 dbf 资料表。目前本函式库无法存取 dBase 中的 indexes 或 memo 的栏位，亦无法将资料表锁上。在使用上特别需要小心使用，因为它不是真正的资料库系统，仅是储存资料的资料表而已，二个以上的使用者同时存取同一个资料表时甚至可能会发生 dbf 资料表崩毁的情形。如果可能话，最好是用真正的资料库系统，如 MySQL 或 Oracle 等，就不会有多人使用时导至资料损毁的困扰。

dbase_create: | 建立 dBase 资料表。
dbase_open: | 开启 dBase 资料表。
dbase_close: | 关闭 dBase 资料表。
dbase_pack: | 清理 dBase 资料表。
dbase_add_record: | 加入资料到 dBase 资料表。
dbase_delete_record: | 删除 dBase 资料表的资料。
dbase_get_record: | 取得 dBase 资料表的资料。
dbase_numfields: | 取得 dBase 资料表的栏位数。
dbase_numrecords: | 取得 dBase 资料表的列数。


dbm 类资料库函式库

本函式库共有 10 个函式

dbm 为柏克莱大学所发展的档案型资料库。欲使用本函式可能需要先安装相关的 DBM 函数馆，当然在 BSD 系列的作业系统中已经装好的就不用自行动手了。

dbm 在资料存取没有很复杂的栏位，它只有单纯的键/值 (key/value) 的栏位。

下例为简单的 dbm 使用范例

<?
function do_stuff() {
// 略去复杂的资料处理流程
}
$dbm = dbmopen("lastseen", "w");
if (dbmexists($dbm, $userid)) {
$last_seen = dbmfetch($dbm, $userid);
} else {
dbminsert($dbm, $userid, time());
}
do_stuff();
dbmreplace($dbm, $userid, time());
dbmclose($dbm);
?>

dbmopen: | 开启 DBM 资料库连结。
dbmclose: | 关闭 DBM 资料库。
dbmexists: | 检查键是否存在。
dbmfetch: | 取回指定资料。
dbminsert: | 加入资料。
dbmreplace: | 更动或加入资料。
dbmdelete: | 删除指定资料。
dbmfirstkey: | 取回首笔键名。
dbmnextkey: | 取回下笔键值。
dblist: | 取得 DBM 的资讯。


目录管理函式库

本函式库共有 6 个函式

chdir: | 改变目录。
dir: | 目录类别物件。
closedir: | 关闭目录 handle。
opendir: | 开启目录 handle。
readdir: | 读取目录 handle。
rewinddir: | 重设目录 handle。


动态连结函式库

本函式库共有 1 个函式

dl: 载入 PHP 扩充模组。


程式执行功能函式库

本函式库共有 4 个函式

escapeshellcmd: | 除去字串中的特殊符号。
exec: | 执行外部程式。
system: | 执行外部程式并显示输出资料。
passthru: | 执行外部程式并不加处理输出资料。


FDF 函式库

本函式库共有 12 个函式

本函式库用来实作表单资料格式 (Forms Data Format, FDF)，可以参考 http://partners.adobe.com/asn/developer/acrosdk/main.html 上面有更多有关 FDF 的资料文件。

FDF_open: | 打开 FDF 文件。
FDF_close: | 关闭 FDF 文件。
FDF_create: | 建立新的 FDF 文件。
FDF_save: | 将 FDF 文件存档。
FDF_get_value: | 取得栏位的值。
FDF_set_value: | 设定栏位的值。
FDF_next_field_name: | 下一栏位的名称。
FDF_set_ap: | 设定显示栏位。
FDF_set_status: | 设定 /STATUS 键。
FDF_get_status: | 取得 /STATUS 键的值。
FDF_set_file: | 设定 /F 键。
FDF_get_file: | 取得 /F 键的值。


filePro 资料库函式库

本函式库共有 7 个函式

FilePro 由 Personix, Inc. 所发展的资料库系统，它支援 UNIX 及 DOS 等作业系统。更多的细节可以参考 http://www.fileproplus.com。目前 PHP 提供的功能仅能读取 filePro 资料库，而无法对它做写入等相关动作。

filepro: | 读取 FilePro Map 档。
filepro_fieldname: | 取得栏位名称。
filepro_fieldtype: | 取得栏位型态。
filepro_fieldwidth: | 取得栏位宽度。
filepro_retrieve: | 取得指定储存格资料。
filepro_fieldcount: | 取得栏位数目。
filepro_rowcount: | 取得列数目。


档案系统函式库

本函式库共有 58 个函式

basename: | 传回不含路径的档案字串。
chgrp: | 改变档案所属的群组。
chmod: | 改变档案的属性。
chown: | 改变档案的拥有者。
clearstatcache: | 清除档案状态快取。
copy: | 复制档案。
delete: | 无用的项目。
dirname: | 取得路径中的目录名。
diskfreespace: | 取得目录所在的剩余可用空间。
fclose: | 关闭已开启的档案。
feof: | 测试档案指标是否指到档尾。
fgetc: | 取得档案指标所指的字元。
fgetcsv: | 取得档案指标所指行，并剖析 CSV 栏位。
fgets: | 取得档案指标所指的行。
fgetss: | 取得档案指标所指的行，并去掉 HTML 语言标记。
file: | 将档案全部读入阵列变数中。
file_exists: | 检查档案是否存在。
fileatime: | 取得档案最后的存取时间。
filectime: | 取得档案最后的改变时间。
filegroup: | 取得档案所属的群组。
fileinode: | 取得档案的 inode 值。
filemtime: | 取得档案最后的修改时间。
fileowner: | 取得档案的拥有者。
fileperms: | 取得档案的权限设定。
filesize: | 获得档案的大小。
filetype: | 获得档案的型态。
flock: | 锁住档案。
fopen: | 开启档案或者 URL。
fpassthru: | 输出所有剩余资料。
fputs: | 写到档案指标。
fread: | 位元组的方式读取档案。
fseek: | 移动档案指标。
ftell: | 取得档案读写指标位置。
fwrite: | 二进位位元方式写入档案。
set_file_buffer: | 设定档案缓冲区大小。
is_dir: | 测试档案是否为目录。
is_executable: | 测试档案是否为可执行档。
is_file: | 测试档案是否为正常档案。
is_link: | 测试档案是否为连结档。
is_readable: | 测试档案是否可读取。
is_writeable: | 测试档案是否可写入。
link: | 建立硬式连结。
linkinfo: | 取得连结资讯。
mkdir: | 建立目录。
pclose: | 关闭档案。
popen: | 开启档案。
readfile: | 输出档案。
readlink: | 传回符号连结 (symbolic link) 目标档。
rename: | 更改档名。
rewind: | 重置开档的读写位置指标。
rmdir: | 删除目录。
stat: | 取得档案相关资讯。
lstat: | 取得连结档相关资讯。
symlink: | 建立符号连结 (symbolic link)。
tempnam: | 建立唯一的临时档。
touch: | 设定最后修改时间。
umask: | 改变目前的档案属性遮罩 umask。
unlink: | 删除档案。


HTTP 相关函式库

本函式库共有 2 个函式

header: | 送出 HTTP 协定的标头到浏览器
setcookie: | 送出 Cookie 资讯到浏览器。


Hyperwave 伺服器函式库

本函式库共有 53 个函式

要使用这种函式库，须先到 http://www.hyperwave.com 下载函式馆，和大多数 PHP 支援的函式馆不同，这套是需要收费的函式馆，提供下载的试用版为三十天的试用版。

Hyperwave 是一种资讯系统，和一般资料库不同的是，Hyperwave 着重在文件的储存及管理。Hyperwave 将每一笔文件当成一个物件，同时也记载着有关该物件的 meta 资讯，当然 meta 资料可由使用者自行扩充。属性的格式为 name/value 这也对映到 form 上的 name=value 资讯。比较特别的是这些 name 的名称不必是唯一的，也就是 name 可以重覆。每笔物件属性都是由换行字元分开，亦即每行代表一笔属性。

hw_Children: | 取得子物件代码。
hw_ChildrenObj: | 取得子物件的物件记录。
hw_Close: | 关闭 Hyperwave 连线。
hw_Connect: | 连上 Hyperwave 伺服器。
hw_Cp: | 复制物件。
hw_Deleteobject: | 删除物件。
hw_DocByAnchor: | 取得指定锚的文件物件代码。
hw_DocByAnchorObj: | 取得指定锚的文件物件。
hw_DocumentAttributes: | 取得指定文件物件属性。
hw_DocumentBodyTag: | 取得指定文件物件的文件主体标记。
hw_DocumentContent: | 取得指定文件物件的内容。
hw_DocumentSetContent: | 重设指定文件物件的内容。
hw_DocumentSize: | 取得文件大小。
hw_ErrorMsg: | 取得错误讯息。
hw_EditText: | 更动文字文件。
hw_Error: | 取得错误代码。
hw_Free_Document: | 释放文件使用的记忆体。
hw_GetParents: | 取得父物件的 ID。
hw_GetParentsObj: | 取得父物件的资料。
hw_GetChildColl: | 取得子物件们的 ID。
hw_GetChildCollObj: | 取得子物件们的资料。
hw_GetRemote: | 取得远端文件。
hw_GetRemoteChildren: | 取得远端的子文件。
hw_GetSrcByDestObj: | 取得指定目的的文件内容。
hw_GetObject: | 取得物件。
hw_GetAndLock: | 取得并锁住物件。
hw_GetText: | 取得纯文字文件。
hw_GetObjectByQuery: | 搜寻物件。
hw_GetObjectByQueryObj: | 搜寻物件。
hw_GetObjectByQueryColl: | 搜寻聚集物件。
hw_GetObjectByQueryCollObj: | 搜寻聚集物件。
hw_GetChildDocColl: | 取得全部子文件聚集。
hw_GetChildDocCollObj: | 取得全部子文件聚集记录。
hw_GetAnchors: | 取得文件的连结锚。
hw_GetAnchorsObj: | 取得文件的连结锚记录。
hw_Mv: | 移动物件。
hw_Identify: | 使用者身份确认。
hw_InCollections: | 检查物件聚集。
hw_Info: | 连线资讯。
hw_InsColl: | 插入聚集。
hw_InsDoc: | 插入文件。
hw_InsertDocument: | 上传文件。
hw_InsertObject: | 插入物件记录。
hw_Modifyobject: | 修改物件记录。
hw_New_Document: | 建立新文件。
hw_Objrec2Array: | 物件记录转为阵列。
hw_OutputDocument: | 输出文件。
hw_pConnect: | 连上 Hyperwave 伺服器。
hw_PipeDocument: | 取得文件。
hw_Root: | 取得根物件代码。
hw_Unlock: | 取消锁定。
hw_Who: | 列出目前使用者。
hw_GetUsername: | 目前使用者名字。


图形处理函式库

本函式库共有 44 个函式

使用本功能需要在编译 PHP 前先安装 GD library，可到 http://www.boutell.com/gd 下载。在 1.6.2 版以前的 GD library 有支援 GIF 格式的功能，但因为 GIF 格式使用的 LZW 演算法牵涉到 Unisys 的专利权，因此在 GD library 1.6.2 版之后不支援 GIF 的格式。在安装 1.6.2 版时系统必须要有 libpng 及 zlib 二个动态连结函式库。前者可在 http://www.cdrom.com/pub/png 下载；后者可在 http://www.cdrom.com/pub/infozip/zlib 下载。而 GD library 也支援 TrueType 字型，请先到 http://www.freetype.org 下载动态连结程式库。

PHP 在 3.0.13 版之后，终于支援了 PNG 的图型格式，使用 PNG 就不怕会有版权的问题了，而且在 PHP 这个版本以后，安装编译时会检查 GD library 支援的是旧的 GIF 格式还是新的 PNG 格式来决定是否使用 GIF 或 PNG 的专用函式。

若真的需要使用 GD Library 中有关 GIF 的部份，不妨找较旧的 FreeBSD 或者 Linux 版本，里面可能会有这些函式，但可能会因为侵犯到 Unisys 的专利权，而引发法律问题。同时请注意旧版的 TTF 字型相关函式可能不能用。

以下是简单的例子

<?php
Header("Content-type: image/gif");
$im = imagecreate(400,30);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
imageline($im, 1, 1, 350, 25, $black);
imagearc($im, 200, 15, 20, 20, 35, 190, $white);
imagestring($im, 5, 4, 10, "Graph TEST!!", $white);
ImageGif($im);
ImageDestroy($im);
?>

GetImageSize: | 取得图片的长宽。
ImageArc: | 画弧线。
ImageChar: | 写出横向字元。
ImageCharUp: | 写出直式字元。
ImageColorAllocate: | 匹配颜色。
ImageColorTransparent: | 指定透明背景色。
ImageCopyResized: | 复制新图并调整大小。
ImageCreate: | 建立新图。
ImageDashedLine: | 绘虚线。
ImageDestroy: | 结束图形。
ImageFill: | 图形着色。
ImageFilledPolygon: | 多边形区域着色。
ImageFilledRectangle: | 矩形区域着色。
ImageFillToBorder: | 指定颜色区域内着色。
ImageFontHeight: | 取得字型的高度。
ImageFontWidth: | 取得字型的宽度。
ImageInterlace: | 使用交错式显示与否。
ImageLine: | 绘实线。
ImageLoadFont: | 载入点阵字型。
ImagePolygon: | 绘多边形。
ImageRectangle: | 绘矩形。
ImageSetPixel: | 绘点。
ImageString: | 绘横式字串。
ImageStringUp: | 绘直式字串。
ImageSX: | 取得图片的宽度。
ImageSY: | 取得图片的高度。
ImageTTFBBox: | 计算 TTF 文字所占区域。
ImageTTFText: | 写 TTF 文字到图中。
ImageColorAt: | 取得图中指定点颜色的索引值。
ImageColorClosest: | 计算色表中与指定颜色最接近者。
ImageColorExact: | 计算色表上指定颜色索引值。
ImageColorResolve: | 计算色表上指定或最接近颜色的索引值。
ImageColorSet: | 设定色表上指定索引的颜色。
ImageColorsForIndex: | 取得色表上指定索引的颜色。
ImageColorsTotal: | 计算图的颜色数。
ImagePSLoadFont: | 载入 PostScript 字型。
ImagePSFreeFont: | 卸下 PostScript 字型。
ImagePSEncodeFont: | PostScript 字型转成向量字。
ImagePSText: | 写 PostScript 文字到图中。
ImagePSBBox: | 计算 PostScript 文字所占区域。
ImageCreateFromPNG: | 取出 PNG 图型。
ImagePNG: | 建立 PNG 图型。
ImageCreateFromGIF: | 取出 GIF 图型。
ImageGIF: | 建立 GIF 图型。


IMAP 电子邮件系统函式库

本函式库共有 46 个函式

IMAP 的全名是 Internet Message Access Protocol，即网际网路讯息存取协定，为美国史丹福大学 (Stanford University) 在 1986 年开始研发的多重邮箱电子邮件系统。PHP 所提供的功能是 IMAP 4 的系统，这是根据 RFC 1730 所实作的。更多有关 IMAP 的资讯可以参考 IMAP 的官方网站 http://www.imap.org。

欲使用 IMAP 的电子邮件功能，要先到 ftp://ftp.cac.washington.edu/imap 下载 IMAP 的客户端程式。在编译完成之后将 c-client/c-client.a 复制到 /usr/local/lib 之中，并将 c-client/rfc822.h、mail.h 及 linkage.h 三个档案复制到 /usr/local/include 之下。之后编译 PHP 程式时要加入 --with-imap 的选项。

imap_append: | 附加字串到指定的邮箱中。
imap_base64: | 解 BASE64 编码。
imap_body: | 读信的内文。
imap_check: | 传回邮箱资讯。
imap_close: | 关闭 IMAP 连结。
imap_createmailbox: | 建立新的信箱。
imap_delete: | 标记欲删除邮件。
imap_deletemailbox: | 删除既有信箱。
imap_expunge: | 删除已标记的邮件。
imap_fetchbody: | 从信件内文取出指定区段。
imap_fetchstructure: | 获取某信件的结构资讯。
imap_header: | 获取某信件的标头资讯。
imap_headers: | 获取全部信件的标头资讯。
imap_listmailbox: | 获取邮箱列示。
imap_listsubscribed: | 获取订阅邮箱列示。
imap_mail_copy: | 复制指定信件到它处邮箱。
imap_mail_move: | 移动指定信件到它处邮箱。
imap_num_msg: | 取得信件数。
imap_num_recent: | 取得新进信件数。
imap_open: | 开启 IMAP 连结。
imap_ping: | 检查 IMAP 是否连线。
imap_renamemailbox: | 更改邮箱名字。
imap_reopen: | 重开 IMAP 连结。
imap_subscribe: | 订阅邮箱。
imap_undelete: | 取消删除邮件标记。
imap_unsubscribe: | 取消订阅邮箱。
imap_qprint: | 将 qp 编码转成八位元。
imap_8bit: | 将八位元转成 qp 编码。
imap_binary: | 将八位元转成 base64 编码。
imap_scanmailbox: | 寻找信件有无特定字串。
imap_mailboxmsginfo: | 取得目前邮箱的资讯。
imap_rfc822_write_address: | 电子邮件位址标准化。
imap_rfc822_parse_adrlist: | 剖析电子邮件位址。
imap_setflag_full: | 设定信件旗标。
imap_clearflag_full: | 清除信件旗标。
imap_sort: | 将信件标头排序。
imap_fetchheader: | 取得原始标头。
imap_uid: | 取得信件 UID。
imap_getmailboxes: | 取得全部信件详细资讯。
imap_getsubscribed: | 列出所有订阅邮箱。
imap_msgno: | 列出 UID 的连续信件。
imap_search: | 搜寻指定标准的信件。
imap_last_error: | 最后的错误讯息。
imap_errors: | 所有的错误讯息。
imap_alerts: | 所有的警告讯息。
imap_status: | 目前的状态资讯。


PHP 选项及相关资讯函式库

本函式库共有 17 个函式

error_log: | 送出一个错误讯息。
error_reporting: | 设定错误讯息回报的等级。
getenv: | 取得系统的环境变数
get_cfg_var: | 取得 PHP 的设定选项值。
get_current_user: | 取得 PHP 行程的拥有者名称。
get_magic_quotes_gpc: | 取得 PHP 环境变数 magic_quotes_gpc 的值。
get_magic_quotes_runtime: | 取得 PHP 环境变数 magic_quotes_runtime 的值。
getlastmod: | 传回该网页的最后修改时间。
getmyinode: | 传回该网页的 inode 值。
getmypid: | 传回 PHP 的行程代号。
getmyuid: | 传回 PHP 的使用者代码。
getrusage: | 传回系统资源使用率。
phpinfo: | 传回 PHP 所有相关资讯。
phpversion: | 传回 PHP 版本讯息。
putenv: | 设定系统环境变数。
set_magic_quotes_runtime: | 设定 magic_quotes_runtime 值。
set_time_limit: | 设定该页最久执行时间。


Informix 资料库函式库

本函式库共有 38 个函式

目前支援的 Informix 版本为 ODS 7.x、SE 7.x 与 Universal Server (IUS) 9.x 三种。在 ODS 7.x 的版本中，完全支援所有的资料型态，而在 IUS 9.x 中，不支援 SLOB 与 CLOB 二种型态。

要在 Web Server 上安装 Informix Client 端，在编译 PHP 之前 (configure 之前)，要先设好 IFX_LIBDIR、IFX_LIBS 及 IFX_INCDIR 三种环境变数，若是 9.x 版尚要设定 HAVE_IFX_IUS 环境变数。同时在设定时要加入 --with_informix=yes 的选项。

ifx_connect: | 开启 Informix 伺服器连线。
ifx_pconnect: | 开启 Informix 伺服器长期连线。
ifx_close: | 关闭 Informix 伺服器连线。
ifx_query: | 送出一个 query 字串。
ifx_prepare: | 准备 query 字串。
ifx_do: | 执行已准备 query 字串。
ifx_error: | 取得 Informix 最后的错误。
ifx_errormsg: | 取得 Informix 最后错误讯息。
ifx_affected_rows: | 得到 Informix 最后操作影响的列数目。
ifx_getsqlca: | 取得 query 后的 sqlca 资讯。
ifx_fetch_row: | 传回单列的各栏位。
ifx_htmltbl_result: | 将 query 传回资料转成 HTML 表格。
ifx_fieldtypes: | 列出 Informix 的 SQL 栏位。
ifx_fieldproperties: | 列出 Informix 的 SQL 栏位属性。
ifx_num_fields: | 取得传回栏位的数目。
ifx_num_rows: | 取得传回列的数目。
ifx_free_result: | 释放传回占用记忆体。
ifx_create_char: | 建立字元物件。
ifx_free_char: | 删除字元物件。
ifx_update_char: | 更改字元物件。
ifx_get_char: | 取得字元物件。
ifx_create_blob: | 建立长位元物件。
ifx_copy_blob: | 复制长位元物件。
ifx_free_blob: | 删除长位元物件。
ifx_get_blob: | 取得长位元物件。
ifx_update_blob: | 更改长位元物件。
ifx_blobinfile_mode: | 设定长位元物件模式。
ifx_textasvarchar: | 设定文字模式内定值。
ifx_byteasvarchar: | 设定位元组模式内定值。
ifx_nullformat: | 设定空字元模式内定值。
ifxus_create_slob: | 建立 slob 物件。
ifx_free_slob: | 删除 slob 物件。
ifxus_close_slob: | 删除 slob 物件。
ifxus_open_slob: | 开启 slob 物件。
ifxus_tell_slob: | 传回目前档案或找寻位置。
ifxus_seek_slob: | 设定目前档案或找寻位置。
ifxus_read_slob: | 读取指定数目的 slob 物件。
ifxus_write_slob: | 将字串写入 slob 物件中。


InterBase 资料库函式库

本函式库共有 11 个函式

InterBase 是 Inprise 的资料库系统，在 Windows 作业平台上的 Delphi 及 BCB 等开发工具中附有单机的版本供开发使用。更多有关 InterBase 的资讯，可以参考 http://www.interbase.com

ibase_connect: | 开启 InterBase 伺服器连线。
ibase_pconnect: | 保持 InterBase 伺服器连线。
ibase_close: | 关闭 InterBase 伺服器连线。
ibase_query: | 送出一个 query 字串。
ibase_fetch_row: | 传回单列的各栏位。
ibase_free_result: | 释放传回占用记忆体。
ibase_prepare: | 分析 SQL 语法。
ibase_bind: | 连结 PHP 变数到 InterBase 参数。
ibase_execute: | 执行 SQL 的指令区段。
ibase_free_query: | 释放查询指令占用记忆体。
ibase_timefmt: | 设定时间格式。


LDAP 目录协定函式库

本函式库共有 25 个函式

LDAP (Lightweight Directory Access Protocol) 是一种轻量的目录存取协定，提供客户从各个角落连接到目录伺服器中。在 RFC 1777 及 RFC 1778 中对 LDAP 有较深入的描述，亦可参考 Netscape 站上有关 LDAP 方面的资料。

在 LDAP 的协定之中，很像硬碟目录结构或倒过来的树状结构。LDAP 的根就是全世界，第一级是属于国别 (countries) 性质的层级，之后可能会有公司 (organization) 的层级，接着是部门 (organizationalUnit)，再来为个人。而就像档案，每个人都会有所谓的显名 (distinguished name, 简称 dn)，dn 可能像酱子 cn=John Smith,ou=Accounts,o=My Company,c=US。

<?php
// 本例使用到 connect, bind, search, interpret search
// result, close connection 等等 LDAP 的功能。
echo "<h3>LDAP 搜寻测试</h3>";
echo "连线中 ...";
$ds=ldap_connect("localhost"); // 先连上有效的 LDAP 伺服器
echo "连上 ".$ds."<p>";

if ($ds) {
echo "Binding ...";
$r=ldap_bind($ds); // 匿名的 bind，为唯读属性
echo "Bind 传回 ".$r."<p>";
echo "Searching for (sn=S*) ..."; // 找寻 S 开头的姓氏
$sr=ldap_search($ds,"o=My Company, c=US", "sn=S*");
echo "Search 传回 ".$sr."<p>";
echo "S 开头的姓氏有 ".ldap_count_entries($ds,$sr)." 个<p>";
echo "取回姓氏资料 ...<p>";
$info = ldap_get_entries($ds, $sr);
echo "资料传回 ".$info["count"]." 笔:<p>";
for ($i=0; $i<$info["count"]; $i++) {
echo "dn 为: ". $info[$i]["dn"] ."<br>";
echo "cn 为: ". $info[$i]["cn"][0] ."<br>";
echo "email 为: ". $info[$i]["mail"][0] ."<p>";
}
echo "关闭连结";
ldap_close($ds);
} else {
echo "<h4>无法连接到 LDAP 伺服器</h4>";
}
?>

欲使用 LDAP 伺服器功能要先在 Web 伺服器安装 LDAP 客户端程式，较着名的有美国密西根大学的 ldap-3.3 套件或者是 Netscape 的 Directory SDK。可到下列网址找回来安装

  • Netscape http://developer.netscape.com/tech/directory/
  • 密西根大学 http://www.umich.edu/~dirsvcs/ldap/index.html
  • OpenLDAP 计划 http://www.openldap.com
  • LDAP World http://elvira.innosoft.com/ldapworld

ldap_add: | 增加 LDAP 名录的条目。
ldap_mod_add: | 增加 LDAP 名录的属性。
ldap_mod_del: | 删除 LDAP 名录的属性。
ldap_mod_replace: | 新的 LDAP 名录取代旧属性。
ldap_bind: | 系住 LDAP 目录。
ldap_close: | 结束 LDAP 连结。
ldap_connect: | 连上 LDAP 伺服器。
ldap_count_entries: | 搜寻结果的数目。
ldap_delete: | 删除指定资源。
ldap_dn2ufn: | 将 dn 转成易读的名字。
ldap_explode_dn: | 切开 dn 的栏位。
ldap_first_attribute: | 取得第一笔资源的属性。
ldap_first_entry: | 取得第一笔结果代号。
ldap_free_result: | 释放传回资料记忆体。
ldap_get_attributes: | 取得传回资料的属性。
ldap_get_dn: | 取得 DN 值。
ldap_get_entries: | 取得全部传回资料。
ldap_get_values: | 取得全部传回值。
ldap_list: | 列出简表。
ldap_modify: | 改变 LDAP 名录的属性。
ldap_next_attribute: | 取得传回资料的下笔属性。
ldap_next_entry: | 取得下一笔结果代号。
ldap_read: | 取得目前的资料属性。
ldap_search: | 列出树状简表。
ldap_unbind: | 结束 LDAP 连结。


电子邮件函式库

本函式库共有 1 个函式

mail: 寄出电子邮件。


数学运算函式库

本函式库共有 33 个函式

本函式库能处理的数值范围只到长整数与倍浮点数的范围。若要处理超过上述范围的数值，要使用 BC 高精确度函式库。本函式库定义了圆周率的常数 M_PI 值为 3.14159265358979323846。

Abs: | 取得绝对值。
Acos: | 取得反余弦值。
Asin: | 取得反正弦值。
Atan: | 取得反正切值。
Atan2: | 计算二数的反正切值。
base_convert: | 转换数字的进位方式。
BinDec: | 二进位转成十进位。
Ceil: | 计算大于指定数的最小整数。
Cos: | 余弦计算。
DecBin: | 十进位转二进位。
DecHex: | 十进位转十六进位。
DecOct: | 十进位转八进位。
Exp: | 自然对数 e 的次方值。
Floor: | 计算小于指定数的最大整数。
getrandmax: | 乱数的最大值。
HexDec: | 十六进位转十进位。
Log: | 自然对数值。
Log10: | 10 基底的对数值。
max: | 取得最大值。
min: | 取得最小值。
mt_rand: | 取得乱数值。
mt_srand: | 设定乱数种子。
mt_getrandmax: | 乱数的最大值。
number_format: | 格式化数字字串。
OctDec: | 八进位转十进位。
pi: | 圆周率。
pow: | 次方。
rand: | 取得乱数值。
round: | 四舍五入。
Sin: | 正弦计算。
Sqrt: | 开平方根。
srand: | 设定乱数种子。
Tan: | 正切计算。


mcrypt 编码函式库

本函式库共有 8 个函式

要使用本函式库要先准备 mcrypt 程式，可以到 ftp://argeas.cs-net.gr/pub/unix/mcrypt 下载这个程式 libmcrypt-x.x.tar.gz。同时在编译 PHP 程式时需要加入 --with-mcrypt 的选项，俾使本函式库能顺利运作。

本函式提供的编码方式有 DES、TripleDES、Blowfish (内定值)、3-WAY、SAFER-SK64、SAFER-SK128、TWOFISH、TEA、RC2 及使用 CBC, OFB, CFB, ECB 作为密码检索的 GOST。此外还有 RC6 及 IDEA 等非免费的编码方式。见下面列示为已定义的密码：

  • MCRYPT_BLOWFISH
  • MCRYPT_DES
  • MCRYPT_TripleDES
  • MCRYPT_ThreeWAY
  • MCRYPT_GOST
  • MCRYPT_CRYPT
  • MCRYPT_DES_COMPAT
  • MCRYPT_SAFER64
  • MCRYPT_SAFER128
  • MCRYPT_CAST128
  • MCRYPT_TEAN
  • MCRYPT_RC2
  • MCRYPT_TWOFISH (mcrypt 2.x 前的版本用)
  • MCRYPT_TWOFISH128 (mcrypt 2.x 后的版本用)
  • MCRYPT_TWOFISH192
  • MCRYPT_TWOFISH256
  • MCRYPT_RC6
  • MCRYPT_IDEA

在密码检索本 (cipher) 方面，本函库支援 CBC、OFB、CFB 与 ECB 四种密码检索本。这四种密码检索本的简单叙述如下，更详细的资讯请参考 Schneier 所着作的 Applied Cryptography (ISBN: 0-471-11709-9)：

  1. ECB (electronic codebook): 适合随机的资料，例如使用另外的密钥。若资料量少且随机时，使用 ECB 较不适合。
  2. CBC (cipher block chaining): 适合档案的加密，安全性较 ECB 好。
  3. CFB (cipher feedback): 适合对位元组资料流中的某段独立位元组资料 (single bytes) 加密。
  4. OFB (output feedback): 与 CFB 相容，尤其适合在无法忍受错误波及的应用上。

目前 PHP 仍无法对单位元 (bit) 的熵值做加密解密的动作，目前只适合对字串作密码处理。

在使用 CFB 及 OFB 二种模式时，必须要向量初始化 (Initialization vector, IV)，CBC 模式也可以使用向量初始化。向量初始化的值在加解密时必须是独一无二的，同时也要保持相同。当加密后的资料输出时，也可同时输出密码钥匙 (例如存在档案中)；或者也可以将向量初始化的值与加密后的资料一起输出。

mcrypt_get_cipher_name: | 取得编码方式的名称。
mcrypt_get_block_size: | 取得编码方式的区块大小。
mcrypt_get_key_size: | 取得编码钥匙大小。
mcrypt_create_iv: | 从随机源将向量初始化。
mcrypt_cbc: | 使用 CBC 将资料加/解密。
mcrypt_cfb: | 使用 CFB 将资料加/解密。
mcrypt_ecb: | 使用 ECB 将资料加/解密。
mcrypt_ofb: | 使用 OFB 将资料加/解密。


mhash 杂凑函式库

本函式库共有 4 个函式

本函式库支援多种杂凑演算法，例如最出名的 MD5、SHA1 或 GOST，还有其它多种的杂凑演算法，列示如下：

  • MHASH_MD5
  • MHASH_SHA1
  • MHASH_HAVAL
  • MHASH_RIPEMD160
  • MHASH_RIPEMD128
  • MHASH_SNEFRU
  • MHASH_TIGER
  • MHASH_GOST
  • MHASH_CRC32
  • MHASH_CRC32B

欲使用本函式库要先下载 mhash-x.x.x.tar.gz，网址为 http://sasweb.de/mhash。当然还要编译 mhash 程式库，之后才能编译 PHP 程式，在编译 PHP 程式时，记得要加 --with-mhash 选项打开系统的 mhash 功能。

本函式库适合用来产生检查码 (checksums)、数位代讯息或者其它功能，如下例：

<?php
$input = "Let us meet at 9 o' clock at the secret place.";
$hash = mhash(MHASH_SHA1, $input);
print "杂凑值为 ".bin2hex($hash)."\n";
?>

在浏览器看到的字串是

杂凑值为 d3b85d710d8f6e4e5efd4d5e67d041f9cecedafe

mhash_get_hash_name: | 取得杂凑演算法名称。
mhash_get_block_size: | 取得杂凑方式的区块大小。
mhash_count: | 取得杂凑 ID 的最大值。
mhash: | 计算杂凑值。


杂项函式库

本函式库共有 19 个函式

所有很难在 PHP 函式中归类的函式都属于本函式库。

connection_aborted: | 若连结中断则传回 true。
connection_status: | 取得连线状态。
connection_timeout: | 若超过 PHP 程式执行时间则传回 true。
eval: | 将值代入字串之中。
extract: | 汇入阵列到符号表。
die: | 输出讯息并中断 PHP 程式。
exit: | 结束 PHP 程式。
function_exists: | 查核函式是否已定义。
ignore_user_abort: | 连线中断后程式是否执行。
iptcparse: | 使用 IPTC 模组解析位元资料。
leak: | 泄出记忆体。
pack: | 压缩资料到位元字串之中。
register_shutdown_function: | 定义 PHP 程式执行完成后执行的函式。
serialize: | 储存资料到系统中。
sleep: | 暂停执行。
unpack: | 解压缩位元字串资料。
unserialize: | 取出系统资料。
uniqid: | 产生唯一的值。
usleep: | 暂停执行。


mSQL 资料库函式库

本函式库共有 40 个函式

mSQL 是个小巧的资料库系统，可以到 http://www.hughes.com.au 取得更多有关 mSQL 资料库的详情。

msql: | 送出 query 字串。
msql_affected_rows: | 得到 mSQL 最后操作影响的列数目。
msql_close: | 关闭 mSQL 资料库连线。
msql_connect: | 开启 mSQL 资料库连线。
msql_create_db: | 建立一个新的 mSQL 资料库。
msql_createdb: | 建立一个新的 mSQL 资料库。
msql_data_seek: | 移动内部传回指标。
msql_dbname: | 取得目前所在资料库名称。
msql_drop_db: | 删除指定的 mSQL 资料库。
msql_dropdb: | 删除指定的 mSQL 资料库。
msql_error: | 取得最后错误讯息。
msql_fetch_array: | 传回阵列资料。
msql_fetch_field: | 取得栏位资讯。
msql_fetch_object: | 传回物件资料。
msql_fetch_row: | 传回单列的各栏位。
msql_fieldname: | 传回指定栏位的名称。
msql_field_seek: | 设定指标到传回值的某栏位。
msql_fieldtable: | 获得栏位的资料表 (table) 名称。
msql_fieldtype: | 获得栏位的型态。
msql_fieldflags: | 获得栏位的旗标。
msql_fieldlen: | 获得栏位的长度。
msql_free_result: | 释放传回占用记忆体。
msql_freeresult: | 释放传回占用记忆体。
msql_list_fields: | 列出指定资料表的栏位 (field)。
msql_listfields: | 列出指定资料表的栏位 (field)。
msql_list_dbs: | 列出可用资料库 (database)。
msql_listdbs: | 列出可用资料库 (database)。
msql_list_tables: | 列出指定资料库的资料表 (table)。
msql_listtables: | 列出指定资料库的资料表 (table)。
msql_num_fields: | 取得传回栏位的数目。
msql_num_rows: | 取得传回列的数目。
msql_numfields: | 取得传回栏位的数目。
msql_numrows: | 取得传回列的数目。
msql_pconnect: | 开启 mSQL 伺服器长期连线。
msql_query: | 送出一个 query 字串。
msql_regcase: | 将字串逐字传回大小写字元。
msql_result: | 取得查询 (query) 的结果。
msql_select_db: | 选择一个资料库。
msql_selectdb: | 选择一个资料库。
msql_tablename: | 传回指定资料表的名称。


SQL Server 资料库函式库

本函式库共有 16 个函式

SQL Server 是 Microsoft 从 SyBASE 取得并修改的资料库系统，它只能在 Windows NT Server 上面执行。使用本函式只能使用 Windows NT Server 作为 PHP 的执行平台。

Microsoft SQL Server 的 query 语法为 Transact-SQL，和 SyBASE 的语法几乎相同。本资料库可能是所有 PHP 所支援资料库中，中文书籍最多的资料库了。

mssql_affected_rows: | 取得最后 query 影响的列数。
mssql_close: | 关闭与资料库的连线。
mssql_connect: | 连上资料库。
mssql_data_seek: | 移动列指标。
mssql_fetch_array: | 传回阵列资料。
mssql_fetch_field: | 取得栏位资讯。
mssql_fetch_object: | 传回物件资料。
mssql_fetch_row: | 传回单列的各栏位。
mssql_field_seek: | 设定指标到传回值的某栏位。
mssql_free_result: | 释放传回占用记忆体。
mssql_num_fields: | 取得传回栏位的数目。
mssql_num_rows: | 取得传回列的数目。
mssql_pconnect: | 开启 MS SQL 伺服器长期连线。
mssql_query: | 送出一个 query 字串。
mssql_result: | 取得查询 (query) 的结果。
mssql_select_db: | 选择一个资料库。


MySQL 资料库函式库

本函式库共有 32 个函式

本函式库供存取 MySQL 资料库。有关 MySQL 的细节，及下载 MySQL 资料库，请到这个网址 http://www.mysql.com。而网路上也有许多提供处理 MySQL 的使用者介面程式，建议到 http://www.phpwizard.net/phpMyAdmin 下载 phpMyAdmin，可以使用浏览器操作及管理 MySQL。整套 phpMyAdmin 程式，是用 PHP3 完成的，亦可同时研究 PHP3 与 MySQL 的连结。

mysql_affected_rows: | 得到 MySQL 最后操作影响的列数目。
mysql_close: | 关闭 MySQL 伺服器连线。
mysql_connect: | 开启 MySQL 伺服器连线。
mysql_create_db: | 建立一个 MySQL 新资料库。
mysql_data_seek: | 移动内部传回指标。
mysql_db_query: | 送查询字串 (query) 到 MySQL 资料库。
mysql_drop_db: | 移除资料库。
mysql_errno: | 传回错误讯息代码。
mysql_error: | 传回错误讯息。
mysql_fetch_array: | 传回阵列资料。
mysql_fetch_field: | 取得栏位资讯。
mysql_fetch_lengths: | 传回单列各栏资料最大长度。
mysql_fetch_object: | 传回物件资料。
mysql_fetch_row: | 传回单列的各栏位。
mysql_field_name: | 传回指定栏位的名称。
mysql_field_seek: | 设定指标到传回值的某栏位。
mysql_field_table: | 获得目前栏位的资料表 (table) 名称。
mysql_field_type: | 获得目前栏位的型态。
mysql_field_flags: | 获得目前栏位的旗标。
mysql_field_len: | 获得目前栏位的长度。
mysql_free_result: | 释放传回占用记忆体。
mysql_insert_id: | 传回最后一次使用 INSERT 指令的 ID。
mysql_list_fields: | 列出指定资料表的栏位 (field)。
mysql_list_dbs: | 列出 MySQL 伺服器可用的资料库 (database)。
mysql_list_tables: | 列出指定资料库的资料表 (table)。
mysql_num_fields: | 取得传回栏位的数目。
mysql_num_rows: | 取得传回列的数目。
mysql_pconnect: | 开启 MySQL 伺服器长期连线。
mysql_query: | 送出一个 query 字串。
mysql_result: | 取得查询 (query) 的结果。
mysql_select_db: | 选择一个资料库。
mysql_tablename: | 取得资料表名称。


Sybase 资料库函式库

本函式库共有 16 个函式

这个函式库和 SQL Server 资料库函式库几乎完全相同，实际上是本函式先出现，之后才出现 SQL Server 资料库函式库。而就使用者观点 Sybase 和 MS SQL Server 6.x 也是几乎相同的。当然 MS SQL Server 7.0 之后的差异就比较大了。

sybase_affected_rows: | 取得最后 query 影响的列数。
sybase_close: | 关闭与资料库的连线。
sybase_connect: | 连上资料库。
sybase_data_seek: | 移动列指标。
sybase_fetch_array: | 传回阵列资料。
sybase_fetch_field: | 取得栏位资讯。
sybase_fetch_object: | 传回物件资料。
sybase_fetch_row: | 传回单列的各栏位。
sybase_field_seek: | 设定指标到传回值的某栏位。
sybase_free_result: | 释放传回占用记忆体。
sybase_num_fields: | 取得传回栏位的数目。
sybase_num_rows: | 取得传回列的数目。
sybase_pconnect: | 开启伺服器长期连线。
sybase_query: | 送出一个 query 字串。
sybase_result: | 取得查询 (query) 的结果。
sybase_select_db: | 选择一个资料库。


网路函式库

本函式库共有 13 个函式

fsockopen: | 打开网路的 Socket 连结。
pfsockopen: | 打开网路的 Socket 持续连结。
set_socket_blocking: | 切换搁置与无搁置模式。
gethostbyaddr: | 传回机器名称。
gethostbyname: | 传回 IP 网址。
gethostbynamel: | 传回机器名称的所有 IP。
checkdnsrr: | 检查指定网址的 DNS 记录。
getmxrr: | 取得指定网址 DNS 记录之 MX 栏位。
openlog: | 打开系统纪录。
syslog: | 纪录至系统纪录。
closelog: | 关闭系统纪录。
debugger_on: | 使用内建的 PHP 除错器。
debugger_off: | 关闭内建的 PHP 除错器。


NIS 函式库

本函式库共有 8 个函式

NIS 的全名为 Network Information System，另外一个说法就是 YP (Yellow Pages)。NIS 或 YP 可以让许多不同的 UNIX 机器拥有相同的系统资讯，例如相同的使用者帐号密码，使系统管理人员及使用者都容易在不同的机器间穿梭，不可避免的，会有安全上的缺点，不过安全就不是这儿所讨论的了。而关于 NIS 方面的中英文书籍在市面上都可以找到，或者也可以参考 http://www.desy.de/~sieversm/ypdoku/ypdoku/ypdoku.html。

欲使用 NIS 函式库，记得要在编译 PHP 时将 YP 的选项打开，即加上 --with-yp 选项。

yp_get_default_domain: | 取得机器的 Domain。
yp_order: | 传回 map 的序数。
yp_master: | 取得 NIS 的 Master。
yp_match: | 取得指定资料。
yp_first: | 传回 map 上第一笔符合的资料。
yp_next: | 指定 map 的下笔资料。
yp_errno: | 取得先前 YP 操作的错误码。
yp_err_string: | 取得先前 YP 操作的错误字串。


ODBC 资料库连结函式库

本函式库共有 25 个函式

开放资料连结 (Open Database Connectivity, ODBC) 是连结资料库的共通介面。ODBC 是由微软主导的资料库连结标准，实作环境也以微软的系统最成熟。在 UNIX 系统中，通常要使用其它厂商所提供的 ODBC 介面，有些 UNIX 厂商会自己提供 ODBC 介面 (如 SUN 有为 Solaris 提供 ODBC)。

ODBC 和资料库的查询采用 SQL 语言，这和大部份的资料库查询方式一样，这使得系统可以很容易和各种资料库沟通。当然，透过 ODBC 介面，后端的资料库不一定要 DBMS 这种大型资料库系统，亦可以是资料表 (如 Microsoft Access)、或者是试算表 (如 Microsoft Excel)。

odbc_autocommit: | 开关自动更动功能。
odbc_binmode: | 设定二进位资料处理方式。
odbc_close: | 关闭 ODBC 连结。
odbc_close_all: | 关闭所有 ODBC 连结。
odbc_commit: | 更动 ODBC 资料库。
odbc_connect: | 连结至 ODBC 资料库。
odbc_cursor: | 取得游标名。
odbc_do: | 执行 SQL 指令。
odbc_exec: | 执行 SQL 指令。
odbc_execute: | 执行预置 SQL 指令。
odbc_fetch_into: | 取得传回的指定列。
odbc_fetch_row: | 取得传回一列。
odbc_field_name: | 取得栏位名称。
odbc_field_type: | 取得栏位资料形态。
odbc_field_len: | 取得栏位资料长度。
odbc_free_result: | 释出传回资料的记忆体。
odbc_longreadlen: | 设定传回栏的最大值。
odbc_num_fields: | 取得栏位数目。
odbc_pconnect: | 长期连结至 ODBC 资料库。
odbc_prepare: | 预置 SQL 指令。
odbc_num_rows: | 取得传回列数目。
odbc_result: | 取得传回资料。
odbc_result_all: | 传回 HTML 表格资料。
odbc_rollback: | 撤消当前交易。
odbc_setoption: | 调整 ODBC 设定。


Oracle 8 资料库函式库

本函式库共有 15 个函式

由于本函式库都是呼叫 Oracle8 Call-Interface (OCI8) 来存取 Oracle 资料库，因此在装设 Oracle 8 Client 的 Web 伺服器上，可用本函式库存取 Oracle 7.x 或 8.x 二种版本的资料库伺服器。

OCIDefineByName: | 让 SELECT 指令可使用 PHP 变数。
OCIBindByName: | 让动态 SQL 可使用 PHP 变数。
OCILogon: | 开启与 Oracle 的连结。
OCILogOff: | 关闭与 Oracle 的连结。
OCIExecute: | 执行 Oracle 的指令区段。
OCICommit: | 将 Oracle 的交易处理付诸实行。
OCIRollback: | 撤消当前交易。
OCINumRows: | 取得受影响栏位的数目。
OCIResult: | 从目前列 (row) 的资料取得一栏 (column)。
OCIFetch: | 取得传回资料的一列 (row)。
OCIFetchInto: | 取回 Oracle 资料放入阵列。
OCIColumnIsNULL: | 测试传回行是否为空的。
OCIColumnSize: | 取得栏位型态的大小。
OCINewDescriptor: | 初始新的 LOB/FILE 描述。
OCIParse: | 分析 SQL 语法。


Oracle 资料库函式库

本函式库共有 22 个函式

要使用这个函式库，要在安装 PHP 及 Apache Server 之前先将 Oracle 资料库安装好，并确定 Oracle 能够顺利运作。之后在 PHP 设定 (configure) 时加入 --with-oracle=DIR 的选项，DIR 就是 $ORACLE_HOME 环境变数，例如：

./configure --with-oracle=/abc/def/oracle/product/7.0.3 --with-apache=../apache_1.3.x --enable-track-vars

以下的范例是 stevel@nettek-llc.com (22-Jan-1999) 所提供的。这个范例是传回 Oracle 中 sid1 资料库 (Database) 的 EMP 资料表 (Table) 所有资料。帐号是 SCOTT、密码为 TIGER。

<?php

putenv("ORACLE_SID=sid1");
putenv("ORACLE_HOME=/u01/app/oracle/product/8.0.5");

$handle = ora_plogon("SCOTT@sid1", "TIGER") or die;
$cursor = ora_open($handle);
ora_commitoff($handle);

$query = "SELECT * FROM EMP";
ora_parse($cursor, $query) or die;
ora_exec($cursor);

echo "<HTML><PRE>\n";
echo "$query\n\n";
$numcols = 0;
while(ora_fetch($cursor)) {
$numcols = ora_numcols($cursor);
for ($column=0; $column < $numcols; $column++) {
$data = trim(ora_getcolumn($cursor, $column));
if($data == "") $data = "NULL";
echo "$data\t";
}
echo "\n";
}
$numrows = ora_numrows($cursor);
echo "\nROWS RETURNED: $numrows\n";
echo "</PRE></HTML>\n";

ora_close($cursor);

?>

kk@shonline.de (05-Aug-1998) 指出 ORACLE_HOME 为 Oracle 的安装路径，ORACLE_SID 为 Oracle 的资料库名称，若不知道这二个环境变数可以用 sqlplus 连上 Oracle 来查证。

Ora_Bind: | 连结 PHP 变数到 Oracle 参数。
Ora_Close: | 关闭一个 Oracle 的 cursor。
Ora_ColumnName: | 得到 Oracle 传回列 (Column) 的名称。
Ora_ColumnType: | 得到 Oracle 传回列 (Column) 的型态。
Ora_Commit: | 将 Oracle 的交易处理付诸实行。
Ora_CommitOff: | 关闭自动执行 Oracle 交易更动的功能。
Ora_CommitOn: | 打开自动执行 Oracle 交易更动的功能。
Ora_Error: | 获得 Oracle 错误讯息。
Ora_ErrorCode: | 获得 Oracle 错误代码。
Ora_Exec: | 执行 Oracle 的指令区段。
Ora_Fetch: | 取得传回资料的一列 (row)。
Ora_GetColumn: | 从传回列 (row) 的资料取得一栏 (column)。
Ora_Logoff: | 结束与 Oracle 的连结。
Ora_Logon: | 开启与 Oracle 的连结。
Ora_Open: | 开启 Oracle 的 cursor。
Ora_Parse: | 分析 SQL 语法。
Ora_Rollback: | 撤消当前交易。
Ora_Do: | 快速的 SQL 查询。
Ora_FetchInto: | 取回 Oracle 资料放入阵列。
Ora_ColumnSize: | 取得栏位型态的大小。
Ora_Numcols: | 取得栏位的数目。
Ora_PLogon: | 开启与 Oracle 的长期连结。


Perl 相容语法函式库

本函式库共有 4 个函式

对于熟悉 Perl 的 Webmaster 来说，使用这个函式库可以将 Prel 语言中最强的样式比对功能带到 PHP 之中。更多的细节可以参考 Programming Perl 这本书第二章中有关样式比对 (Pattern Matching) 的部份 (中译本为 Perl 程式设计，第 63 页起)

preg_match: | 字串比对剖析。
preg_match_all: | 字串整体比对剖析。
preg_replace: | 字串比对剖析并取代。
preg_split: | 将字串依指定的规则切开。


PDF 格式档案函式库

本函式库共有 65 个函式

PDF 是 Adobe 所发展的可携式文件格式，它的文件可以在网路上传输、浏览，甚至使用印表机印出，或使用其它输出装置输出，都可以保存原来的文字及图片的编排。详细的资讯可以参考 Adobe 的网站。参考其中有关 PDF 或 Acrobat 的部份。

在 UNIX 系统中，可以使用 Thomas Merz 开发的 PDF 函式馆。将它编译安装完成后，再编译 PHP 程式方可供 PHP 使用 pdflib。编译时可能要 JPEG library 及 TIFF library。

除了用这个函式库可以建立 PDF 档案外，FastIO 公司发展的产品 ClibPDF 也可以处理 PDF 档案。

以下为处理 PDF 档案的范例，本例对 test.pdf 加工后等待使用者读取。

<?php
$fp = fopen("test.pdf", "w");
$pdf = PDF_open($fp);
pdf_set_info_author($pdf, "Uwe Steinmann");
PDF_set_info_title($pdf, "Test for PHP wrapper of PDFlib 2.0");
PDF_set_info_author($pdf, "Name of Author");
pdf_set_info_creator($pdf, "See Author");
pdf_set_info_subject($pdf, "Testing");
PDF_begin_page($pdf, 595, 842);
PDF_add_outline($pdf, "Page 1");
pdf_set_font($pdf, "Times-Roman", 30, 4);
pdf_set_text_rendering($pdf, 1);
PDF_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
PDF_end_page($pdf);
PDF_close($pdf);
fclose($fp);
echo "<A HREF=getpdf.php3>finished</A>";
?>

上例中的 gettest.php3 可能像下面的样子

<?php
$fp = fopen("test.pdf", "r");
header("Content-type: application/pdf");
fpassthru($fp);
fclose($fp);
?>

PDF_get_info: | 传回档案资讯。
PDF_set_info_creator: | 设定建档者字串。
PDF_set_info_title: | 设定档案标题。
PDF_set_info_subject: | 设定档案主题。
PDF_set_info_keywords: | 设定档案的关键字。
PDF_set_info_author: | 设定档案作者。
PDF_open: | 建立新的 PDF 档。
PDF_close: | 关闭 PDF 档。
PDF_begin_page: | 启始 PDF 档案页面。
PDF_end_page: | 关闭 PDF 档案页面。
PDF_show: | 输出字串到 PDF 档案。
PDF_show_xy: | 输出字串到指定坐标。
PDF_set_font: | 设定使用的字型及大小。
PDF_set_leading: | 设定行距。
PDF_set_text_rendering: | 设定文字表现方式。
PDF_set_horiz_scaling: | 设定文字水平间距。
PDF_set_text_rise: | 设定文字高度。
PDF_set_text_matrix: | 设定文字矩阵。
PDF_set_text_pos: | 设定文字位置。
PDF_set_char_spacing: | 设定字元间距。
PDF_set_word_spacing: | 设定字间距。
PDF_continue_text: | 输出文字。
PDF_stringwidth: | 计算字串的宽度。
PDF_save: | 储存环境变数。
PDF_restore: | 还原环境变数。
PDF_translate: | 移动原点。
PDF_scale: | 缩放物件。
PDF_rotate: | 旋转物件。
PDF_setflat: | 设定平滑值。
PDF_setlinejoin: | 设定连线参数。
PDF_setlinecap: | 设定 linecap 参数。
PDF_setmiterlimit: | 设定斜边界限。
PDF_setlinewidth: | 设定线宽。
PDF_setdash: | 设定虚线样式。
PDF_moveto: | 设定处理的坐标点。
PDF_curveto: | 绘贝氏曲线。
PDF_lineto: | 绘直线。
PDF_circle: | 绘圆。
PDF_arc: | 绘弧。
PDF_rect: | 绘长方形。
PDF_closepath: | 形成封闭的向量形状。
PDF_stroke: | 沿向量绘线。
PDF_closepath_stroke: | 形成封闭的向量形状并沿向量绘线。
PDF_fill: | 填满目前的向量。
PDF_fill_stroke: | 填满目前的向量并沿向量绘线。
PDF_closepath_fill_stroke: | 形成封闭的向量形状沿向量绘线并填满。
PDF_endpath: | 关闭目前向量。
PDF_clip: | 组合所有向量。
PDF_setgray_fill: | 指定填入的颜色为灰阶。
PDF_setgray_stroke: | 指定绘图的颜色为灰阶。
PDF_setgray: | 指定绘图的颜色为灰阶并填入。
PDF_setrgbcolor_fill: | 指定填入的颜色为彩色。
PDF_setrgbcolor_stroke: | 指定绘图的颜色为彩色。
PDF_setrgbcolor: | 指定绘图的颜色为彩色并填入。
PDF_add_outline: | 目前页面加入书签。
PDF_set_transition: | 设定页的转换。
PDF_set_duration: | 设定二页的切换时间。
PDF_open_gif: | 开启 GIF 图档。
PDF_open_memory_image: | 开启记忆体图档。
PDF_open_jpeg: | 开启 JPEG 图档。
PDF_close_image: | 关闭图档。
PDF_place_image: | 放置图片到 PDF 档指定位置。
PDF_put_image: | 放置图片到 PDF 档。
PDF_execute_image: | 放置 PDF 档中图片到指定位置。
PDF_add_annotation: | 加入注解。


PostgreSQL 资料库函式库

本函式库共有 32 个函式

Postgres 资料库是由柏克莱大学电脑科学系所开发的资料库系统，为物件关联式资料库的先驱。它提供 SQL92/SQL3 语法。PostgreSQL 是公开使用的免费系统。更多细节可在 http://www.PostgreSQL.org 站上看到。

在 phpWizard.net 网站上也有用 Browser 管理 PostgreSQL 的套装程式 PostgresAdmin。可以用它来轻松管理 PostgreSQL 资料库。

在西元 1998 年的 PostgreSQL 6.3 版之后，可以使用 UNIX 上的 domain sockets。postmaster 加上参数 -i 就可以使用，PostgreSQL 系统会用到 /tmp/.s.PGSQL.5432 的档案。

下面为使用 LOB (Large Object) 的例子

<?php
$database = pg_Connect ("", "", "", "", "jacarta");
pg_exec ($database, "begin");
$oid = pg_locreate ($database);
echo ("$oid\n");
$handle = pg_loopen ($database, $oid, "w");
echo ("$handle\n");
pg_lowrite ($handle, "gaga");
pg_loclose ($handle);
pg_exec ($database, "commit")
pg_exec ($database, "end")
?>

pg_Close: | 关闭 PostgreSQL 伺服器连线。
pg_cmdTuples: | 取得被 SQL 指令影响的资料笔数。
pg_Connect: | 开启 PostgreSQL 伺服器连线。
pg_DBname: | 取得目前的资料库名称。
pg_ErrorMessage: | 传回错误讯息。
pg_Exec: | 执行 query 指令。
pg_Fetch_Array: | 传回阵列资料。
pg_Fetch_Object: | 传回物件资料。
pg_Fetch_Row: | 传回单列的各栏位。
pg_FieldIsNull: | 检查栏位是否有资料。
pg_FieldName: | 传回指定栏位的名称。
pg_FieldNum: | 取得指定栏位的行数。
pg_FieldPrtLen: | 计算可列示的长度。
pg_FieldSize: | 计算指定栏位的长度。
pg_FieldType: | 获得目前栏位的型态。
pg_FreeResult: | 释放传回占用记忆体。
pg_GetLastOid: | 取得最后的物件代码。
pg_Host: | 取得连线机器名称。
pg_loclose: | 关闭大型物件。
pg_locreate: | 建立大型物件。
pg_loopen: | 开启大型物件。
pg_loread: | 读取大型物件。
pg_loreadall: | 读取大型物件并输出。
pg_lounlink: | 删除大型物件。
pg_lowrite: | 读取大型物件。
pg_NumFields: | 取得传回栏位的数目。
pg_NumRows: | 取得传回列的数目。
pg_Options: | 取得连线机器选项。
pg_pConnect: | 开启 PostgreSQL 伺服器长期连线。
pg_Port: | 取得连线机器埠号。
pg_Result: | 取得查询 (query) 的结果。
pg_tty: | 取得连线机器终端机。


URL 处理函式库

本函式库共有 5 个函式

parse_url: | 剖析 URL 字串。
urldecode: | 还原 URL 编码字串。
urlencode: | 将字串以 URL 编码。
base64_encode: | 将字串以 BASE64 编码。
base64_decode: | 将 BASE64 编码字串解码。


常规表示法函式库

本函式库共有 6 个函式

关于常规表示法 (Regular expression)，似乎译成：字串剖析处理，较合乎字面上的意义。但目前所有的相关书籍都译成常规表示法或是正规表示法....等等，实际上是负责字串剖析比对，并对字串做相关的处理。

本函式库让 PHP 也能处理复杂的字串操作。它采用了 POSIX 1003.2 的扩充常规处理 (regular expression) 的标准。更多关于常规表示法的资讯可以参考 UNIX Shell、Perl 或是 awk 等相关的书籍。网路上也有张耀仁先生所作的正规表示式的入门与应用文章。

ereg: | 字串比对剖析。
ereg_replace: | 字串比对剖析并取代。
eregi: | 字串比对剖析，与大小写无关。
eregi_replace: | 字串比对剖析并取代，与大小写无关。
split: | 将字串依指定的规则切开。
sql_regcase: | 将字串逐字传回大小写字元。


信号与共享记忆体函式库

本函式库共有 9 个函式

本函式库提供 System V 的信号处理机制。这个机制可以让系统限制同时使用行程所存取的资源。本函式库亦提供了记忆体共享的机制，可让不同的程式存取相同的变数，方便交换程式资讯。

下表为系统的共享记忆体的限制值

SHMMAX | 共享记忆体的最大值，一般为 131072 bytes
SHMMIN | 共享记忆体的最小值，一般为 1 byte
SHMMNI | 记忆体共享区段的最大值，一般为 100
SHMSEG | 每个行程所能共享的最大记忆体区段，一般为 6

sem_get: | 取得信号代码。
sem_acquire: | 捕获信号。
sem_release: | 释出信号。
shm_attach: | 开启建立共享记忆体区段。
shm_detach: | 中止共享记忆体区段连结。
shm_remove: | 清除记忆体区段。
shm_put_var: | 加入或更新记忆体区段中的变数。
shm_get_var: | 取得记忆体区段中指定的变数。
shm_remove_var: | 删除记忆体区段中指定的变数。


Solid 资料库连结函式库

本函式库共有 10 个函式

理论上，使用标准的 ODBC 会比使用本函式好。当然也可以使用本函式，只是较不鼓励 Solid 函式库。

solid_close: | 关闭 solid 连结。
solid_connect: | 连结至 solid 资料库。
solid_exec: | 执行 SQL 指令。
solid_fetchrow: | 取得传回一列。
solid_fieldname: | 取得栏位名称。
solid_fieldnum: | 取得栏位数目。
solid_freeresult: | 释出传回资料的记忆体。
solid_numfields: | 取得栏位数目。
solid_numrows: | 取得传回列数目。
solid_result: | 取得传回资料。


SNMP 网管函式库

本函式库共有 5 个函式

SNMP (网管协定, Simple Network Management Protocol) 是身为 MIS 或是网路管理人员所必须要碰到的重要课题，中文方面可参考张苑蓉所译的 SNMP 网路管理协定 (ISBN: 957-8247-14-1)，或者直接参考 RFC1089 文件。另外在 http://www.snmp.com 也有许多资料。

要在 PHP 中使用 SNMP 网管函式，需要确定是否可以使用 SNMP 功能。UNIX 系统需要先加装 UCD SNMP 程式，可在 http://ucd-snmp.ucdavis.edu 取得。Windows NT 需要先安装 SNMP 的系统服务。Windows 95/98 系列则无法使用本功能。

值得注意的是 UNIX 平台在编译 UCD SNMP 程式之前，要先将 config.h 档案中的 NO_ZEROLENGTH_COMMUNITY 常数 define 设成 1，也就是将该行的行首 # 字元删掉。如下例

define NO_ZEROLENGTH_COMMUNITY 1

若网路区段 (segmentation) 有怪异的情形，可能就不能用上面的方式了。而若懒得重新编译 UCD SNMP，可以在设定 PHP 时加入 --enable-ucd-snmp-hack 的选项。

snmpget: | 取得指定物件识别码。
snmpwalk: | 取得所有物件。
snmpwalkoid: | 取得网路本体树状资讯。
snmp_get_quick_print: | 取得 UCD 函式库中的 quick_print 值。
snmp_set_quick_print: | 设定 UCD 函式库中的 quick_print 值。


字串处理函式库

本函式库共有 51 个函式

AddSlashes: | 字串加入斜线。
bin2hex: | 二进位转成十六进位。
Chop: | 去除连续空白。
Chr: | 传回序数值的字元。
chunk_split: | 将字串分成小段。
convert_cyr_string: | 转换古斯拉夫字串成其它字串。
crypt: | 将字串用 DES 编码加密。
echo: | 输出字串。
explode: | 切开字串。
flush: | 清出输出缓冲区。
get_meta_tags: | 抽出档案所有 meta 标记的资料。
htmlspecialchars: | 将特殊字元转成 HTML 格式。
htmlentities: | 将所有的字元都转成 HTML 字串。
implode: | 将阵列变成字串。
join: | 将阵列变成字串。
ltrim: | 去除连续空白。
md5: | 计算字串的 MD5 杂凑。
nl2br: | 将换行字元转成 <br>。
Ord: | 传回字元的序数值。
parse_str: | 剖析 query 字串成变数。
print: | 输出字串。
printf: | 输出格式化字串。
quoted_printable_decode: | 将 qp 编码字串转成 8 位元字串。
QuoteMeta: | 加入引用符号。
rawurldecode: | 从 URL 专用格式字串还原成普通字串。
rawurlencode: | 将字串编码成 URL 专用格式。
setlocale: | 设定地域化资讯。
similar_text: | 计算字串相似度。
soundex: | 计算字串的读音值
sprintf: | 将字串格式化。
strchr: | 寻找第一个出现的字元。
strcmp: | 字串比较。
strcspn: | 不同字串的长度。
strip_tags: | 去掉 HTML 及 PHP 的标记。
StripSlashes: | 去掉反斜线字元。
strlen: | 取得字串长度。
strrpos: | 寻找字串中某字元最后出现处。
strpos: | 寻找字串中某字元最先出现处。
strrchr: | 取得某字元最后出现处起的字串。
strrev: | 颠倒字串。
strspn: | 找出某字串落在另一字串遮罩的数目。
strstr: | 传回字串中某字串开始处至结束的字串。
strtok: | 切开字串。
strtolower: | 字串全转为小写。
strtoupper: | 字串全转为大写。
str_replace: | 字串取代。
strtr: | 转换某些字元。
substr: | 取部份字串。
trim: | 截去字串首尾的空格。
ucfirst: | 将字串第一个字元改大写。
ucwords: | 将字串每个字第一个字母改大写。


变数处理函式库

本函式库共有 17 个函式

gettype: | 取得变数的型态。
intval: | 变数转成整数型态。
doubleval: | 变数转成倍浮点数型态。
empty: | 判断变数是否已设定。
is_array: | 判断变数型态是否为阵列型态。
is_double: | 判断变数型态是否为倍浮点数型态。
is_float: | 判断变数型态是否为浮点数型态。
is_int: | 判断变数型态是否为整数型态。
is_integer: | 判断变数型态是否为长整数型态。
is_long: | 判断变数型态是否为长整数型态。
is_object: | 判断变数型态是否为物件型态。
is_real: | 判断变数型态是否为实数型态。
is_string: | 判断变数型态是否为字串型态。
isset: | 判断变数是否已设定。
settype: | 设定变数型态。
strval: | 将变数转成字串型态。
unset: | 删除变数。


Vmailmgr 邮件处理函式库

本函式库共有 5 个函式

本函式需要 qmail 及 vmailmgr，可以到 http://www.qmail.org 及 http://www.qcc.sk.ca/~bguenter/distrib/vmailmgr/ 取得相关的资料及程式。

在使用时需要二个变数，分别为 domain 名字及密码，密码只有前八位数有效。例如

<?php
dl("php3_vmailmgr.so"); //载入动态函式库
$vdomain="vdomain.com";
$basepwd="password";
// 以下为欲使用的 Vmailmgr 函式
?>

vm_adduser: | 加入新使用者。
vm_addalias: | 加入新别名。
vm_passwd: | 改变使用者密码。
vm_delalias: | 删除别名。
vm_deluser: | 删除使用者。


WDDX 函式库

本函式库共有 6 个函式

WDDX 为全球资讯网分散式文件交换，全名为 Web Distributed Data Exchange。其实 WDDX 可以算是 XML 的一个分支。更多有关 WDDX 的资讯可以参考 http://www.wddx.org。

例一: 本例将单一值连续化

<?php
print wddx_serialize_value("PHP to WDDX packet example", "PHP packet");
?>

传回到浏览器的资料为

<wddxPacket version='0.9'><header comment='PHP packet'/><data>
<string>PHP to WDDX packet example</string></data></wddxPacket>

例二: 本例将 WDDX 封包加入资料

<?php
$pi = 3.1415926;
$packet_id = wddx_packet_start("PHP");
wddx_add_vars($packet_id, "pi");

/* Suppose $cities came from database */
$cities = array("Austin", "Novato", "Seattle");
wddx_add_vars($packet_id, "cities");

$packet = wddx_packet_end($packet_id);
print htmlentities($packet);
?>

传回到浏览器的资料为

<wddxPacket version='0.9'><header comment='PHP'/><data><struct>
<var name='pi'><number>3.1415926</number></var><var name='cities'>
<array length='3'><string>Austin</string><string>Novato</string>
<string>Seattle</string></array></var></struct></data></wddxPacket>

wddx_serialize_value: | 将单一值连续化。
wddx_serialize_vars: | 将多值连续化。
wddx_packet_start: | 开始新的 WDDX 封包。
wddx_packet_end: | 结束的 WDDX 封包。
wddx_add_vars: | 将 WDDX 封包连续化。
wddx_deserialize: | 将 WDDX 封包解连续化。


压缩档案函式库

本函式库共有 15 个函式

欲使用本函式库需先安装 zlib，可到 http://www.cdrom.com/pub/infozip/zlib/ 取得该函式馆。

gzclose: | 关闭压缩档。
gzeof: | 判断是否在压缩档尾。
gzfile: | 读压缩档到阵列中。
gzgetc: | 读压缩档中的字元。
gzgets: | 读压缩档中的字串。
gzgetss: | 读压缩档中的字串，并去掉 HTML 指令。
gzopen: | 开启压缩档。
gzpassthru: | 解压缩指标后全部资料。
gzputs: | 资料写入压缩档。
gzread: | 压缩档读出指定长度字串。
gzrewind: | 重设压缩档指标。
gzseek: | 设压缩档指标至指定处。
gztell: | 取得压缩档指标处。
readgzfile: | 读出压缩档。
gzwrite: | 资料写入压缩档。


XML 剖析函式库

本函式库共有 20 个函式

XML (eXtensible Markup Language) 是一种资料文件转换的标准。详情请参考 http://www.w3.org/XML。

要使用本函式库，需先到 http://www.jclark.com/xml 取回 XML 的函式馆，并且编译或安装。用 RedHat Linux 的使用者可以到 http://www.guardian.no/~ssb/phpxml.html 取得 RPM 的格式档。之后要在编译 PHP 前加入 --with-xml 的设定选项。tommy@nashville.net 指出 (12-Jan-1999) 若有问题，尚需在 /usr/local/include 放入 xmltok.h 及 xmlparse.h 二个 C 语言的标头档，或是设好环境变数。

目前的版本支援三种字元集：US-ASCII、ISO-8859-1 与 UTF-8。至于 UTF-16 字元集 PHP 尚未支援。

XML 有许多错误代码，如下

  • XML_ERROR_NONE
  • XML_ERROR_NO_MEMORY
  • XML_ERROR_SYNTAX
  • XML_ERROR_NO_ELEMENTS
  • XML_ERROR_INVALID_TOKEN
  • XML_ERROR_UNCLOSED_TOKEN
  • XML_ERROR_PARTIAL_CHAR
  • XML_ERROR_TAG_MISMATCH
  • XML_ERROR_DUPLICATE_ATTRIBUTE
  • XML_ERROR_JUNK_AFTER_DOC_ELEMENT
  • XML_ERROR_PARAM_ENTITY_REF
  • XML_ERROR_UNDEFINED_ENTITY
  • XML_ERROR_RECURSIVE_ENTITY_REF
  • XML_ERROR_ASYNC_ENTITY
  • XML_ERROR_BAD_CHAR_REF
  • XML_ERROR_BINARY_ENTITY_REF
  • XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
  • XML_ERROR_MISPLACED_XML_PI
  • XML_ERROR_UNKNOWN_ENCODING
  • XML_ERROR_INCORRECT_ENCODING
  • XML_ERROR_UNCLOSED_CDATA_SECTION
  • XML_ERROR_EXTERNAL_ENTITY_HANDLING
和中文有关的资讯可在中央研究院的 Chinese XML Now 网站看到。而和 XML 有关的术语则使用曾士熊先生所译的 SGML 名词英汉翻译表。

xml_parser_create: | 初始 XML 剖析器。
xml_set_object: | 使 XML 剖析器用物件。
xml_set_element_handler: | 设定元素的标头。
xml_set_character_data_handler: | 建立字元资料标头。
xml_set_processing_instruction_handler: | 建立处理指令标头。
xml_set_default_handler: | 建立内定标头。
xml_set_unparsed_entity_decl_handler: | 设定未剖析实体宣告的标头。
xml_set_notation_decl_handler: | 设定记法宣告的标头。
xml_set_external_entity_ref_handler: | 设定外部实体参引的标头。
xml_parse: | 剖析 XML 文件。
xml_get_error_code: | 取得 XML 错误码。
xml_error_string: | 取得 XML 错误字串。
xml_get_current_line_number: | 取得目前剖析的行号。
xml_get_current_column_number: | 获知目前剖析的第几栏位。
xml_get_current_byte_index: | 取得目前剖析为第几个位元组。
xml_parser_free: | 释放剖析占用的记忆体。
xml_parser_set_option: | 设定剖析使用的选项。
xml_parser_get_option: | 取得剖析使用的选项。
utf8_decode: | 将 UTF-8 码转成 ISO-8859-1 码。
utf8_encode: | 将 ISO-8859-1 码转成 UTF-8 码。


Session 函式库

本函式库共有 11 个函式

session_start: | 初始 session。
session_destroy: | 结束 session。
session_name: | 存取目前 session 名称。
session_module_name: | 存取目前 session 模组。
session_save_path: | 存取目前 session 路径。
session_id: | 存取目前 session 代号。
session_register: | 注册新的变数。
session_unregister: | 删除已注册变数。
session_is_registered: | 检查变数是否注册。
session_decode: | Session 资料解码。
session_encode: | Session 资料编码。


GNU 记录函式库

本函式库共有 2 个函式

要使用本函式库，要先装好 GNU Recode 函式馆 3.5 版以上。同时要在编译 PHP 程式时，使用 --with-recode。

GNU 记录函式馆可以在不同的字符集和它表面的编码间相互转换。若无法正确转换，它会尽可能找最正确的字符。目前它可以处理超过 150 个不同的字集 (character sets)，大部份支援的字集都是 RFC 1345 的字集。

recode_string: | 记录字串到记录中。
recode_file: | 记录档案或档案请求到记录中。


FTP 档案传输函式库

本函式库共有 20 个函式

FTP 的全为 File Transfer Protocol，也就是档案传输协定。利用本函式库可以让 PHP 也能处理 FTP 的相关功能。本函式库需要 PHP 3.0.13 版之后才支援。

ftp_connect: | 开启 FTP 连结。
ftp_login: | 登入 FTP 伺服器。
ftp_pwd: | 取得目前所在路径。
ftp_cdup: | 回上层目录。
ftp_chdir: | 改变路径。
ftp_mkdir: | 建新目录。
ftp_rmdir: | 删除目录。
ftp_nlist: | 列出指定目录中所有档案。
ftp_rawlist: | 详细列出指定目录中所有档案。
ftp_systype: | 显示伺服器系统。
ftp_pasv: | 切换主被动传输模式。
ftp_get: | 下载档案。
ftp_fget: | 下载档案，并存在已开的档中。
ftp_put: | 上传档案。
ftp_fput: | 上传已开启档案。
ftp_size: | 获得指定档案的大小。
ftp_mdtm: | 获得指定档案的最后修改时间。
ftp_rename: | 将档案改名。
ftp_delete: | 将档案删除。
ftp_quit: | 关闭 FTP 连线。


MCAL 模组日历存取函式库

本函式库共有 0 个函式

[ 上一页 ]


范例程式

首先要说明的是，这几个范例程式都是不同性质的程式，每个程式在 Webmaster 学科 (若 Webmaster 也算是一门学科的话)，都是不同的主题，也是成为专业人士所必须要研究的，也因此几乎所有和 CGI 有关的书都会提到这些主题。

当然从专业的角度而言，以下的程式实在太简单了，许多专业的 CGI 套件提供了完整而严谨的解决方案。在这儿只是要展现出 PHP 的程式实作，并真正与网站的系统相结合。至于真正要拿这些范例来赚钱，可能还有一段距离。实际上，可以在网路上找一些现成的套件，倒是比开发还容易。

以下就是这些主题

  1. 访客计数器: 探讨如何存取档案。

  2. 使用者认证: 探讨 PHP 与 MySQL 资料库的结合。并提供网页权限的架构。

  3. 聊天室: 探讨程式的共用变数档及用外部指令操作档案。

  4. 留言版: 探讨 PHP 与 Oracle 资料库的结合。

  5. 意见信箱: 探讨 PHP 如何执行外部程式。

  6. 广告轮播: 探讨 PHP 所提供档案上传的功能。


访客计数器

访客计数器是让 Web 访客知道该网页或者网站的人气指数最直接的方法。尤其是想利用网页赚钱的人，访客人数是找广告商最好的说词。当然可以将网站来访人数写成统计报表，但总是感觉直接看到比较真实，到底眼见为凭。

在上图中，访客计数器的流程如下

  1. 第一位使用者浏览某页。
  2. 伺服器程式从资料库或档案中读取该页被浏览次数。
  3. 将次数加一储存，并将它送回第一位使用者。
  4. 第二位使用者浏览某页。
  5. 伺服器程式从资料库或档案中读取该页被浏览次数。
  6. 将次数再加一储存，并将它送回第二位使用者。

PHP 在没有特殊的访客计数器函式，但是我们可以用 PHP 的强大功能自已写一个访客计数器函式。

以下的函式是访客计数器的原型，是由 David W. Bettis 所提供，并经过作者少许修改。

<html>
<head>
<title>访客计数器 原型</title>
</head>
<body>
<?php
/*
simple access counter for php3
(c)1998 David W. Bettis
dbettis@eyeintegrated.com
medify by Wilson Peng
*/

$counterFile = "/tmp/counter.txt";

function displayCounter($counterFile) {
$fp = fopen($counterFile,"rw");
$num = fgets($fp,5);
$num += 1;
print "您是第 "."$num"." 位无聊份子";
exec( "rm -rf $counterFile");
exec( "echo $num > $counterFile");
}

if (!file_exists($counterFile)) {
exec( "echo 0 > $counterFile");
}

displayCounter($counterFile);

?>
</body>
</html>

Copyright © 1998 David W. Bettis

在读取到本页时，PHP 程式先找寻 /tmp/counter.txt 档案是否存在，若不存在，则建立一个 counter.txt 档案，然后将 0 写入档案。然后读取 counter.txt 档案的内容，也就是纯文字档，再将内文的数字存入 $num 变数中。在 $num 的变数出现在浏览器前，还有经过加一的动作，让使用者可以增加。当然，如果想灌水，就在加一动作时加二或者加三，不过自欺是无用的。最后将访客人数再回存 /tmp/counter.txt 就一切 OK。

当然，每一页都要这样写，岂不麻烦到了极点。这时，我们可以利用 PHP 提供的 require() 功能，将计数器整理成一个函式，酱子在使用上就方便多多了。

首先要先将 Apache 的设定档 (httpd.conf) 加入 PHP include 档案的路径。例如要设所有的 include 档都在 http://abcdefghijk.com.tw/include 中，可以在 httpd.conf 加入下面的例子

php3_include_path .:./include:../include

别忘了重新启动 Apache 伺服器，新增的 include 路径才有效。

./apachectl restart

再来就在伺服器的 .../include 目录中放入以下的档案，档名存成 counter.inc

下面就是 MyCounter() 函式。为了让读者方便了解，程式中的变数 $counterFile、$fp 及 $num 保持和 David W. Bettis 所设定的计数器中的变数功能相同。

<?php
//---------------------------
// 访客计数器函式 MyCounter()
// Author: Wilson Peng
// Copyright (C) 1999
//---------------------------
function MyCounter() {
$counterFile="/tmp".$GLOBALS["PHP_SELF"];
if (!file_exists($counterFile)) {
if (!file_exists(dirname($counterFile))) {
mkdir(dirname($counterFile), 0700);
}
exec("echo 0 > $counterFile");
}
$fp = fopen($counterFile,"rw");
$num = fgets($fp,5);
$num += 1;
print "$num";
echo $counterFile;
exec("rm -rf $counterFile");
exec("echo $num > $counterFile");
}
?>

Copyright © 1999, Wilson Peng

当然，要用的话要加 Homepage 中嵌入 MyCounter() 函式，就可以使用了

<?php
require("counter.inc");
?>
<html>
<head>
<title>访客计数器 最终版</title>
</head>
<body>
您是第 <? MyCounter(); ?> 位参观者
</body>
</html>

Copyright © 1999, Wilson Peng

要用这个 MyCounter() 函式，先在 Homepage 的开头处加入 require() 函式，引入 MyCounter() 函式成为该 Homepage 的一部份。之后再将 <? MyCounter(); ?> 字串放在需要计数器的地方就可以了。

function MyCounter() {

:
:
}

在建立函式时，需要用上面的格式。在自订函式名称前加入 function 字串。

每页有用到 MyCounter() 的 Homepage 都会在 /tmp 之后加入该页的路径，这可以用 $PHP_SELF 变数达成。

$counterFile="/tmp".$GLOBALS["PHP_SELF"];

当然，若您要将 /tmp 改成别的目录也可以，不然在 SUN 等伺服器，要是 reboot，/tmp 中的东西都没了，要重新开始再计数了。若您不知要使用什么目录，建议使用 /var/log/counter 这个目录，和其它的 log 等变动资料放在一起。

if (!file_exists($counterFile)) {
if (!file_exists(dirname($counterFile))) {
mkdir(dirname($counterFile), 0700);
}
exec("echo 0 > $counterFile");
}

这五行主要是检查 $counterFile 是否存在，若档案不存在则看目录是否存在，决定要不要建立目录。之后就建立档案，并写入 0。

$fp = fopen($counterFile,"rw");
$num = fgets($fp,5);
$num += 1;
print "$num";
echo $counterFile;

这五行就是打开计数器存放的档案，并将它累加后的结果送到浏览器端。

exec("rm -rf $counterFile");
exec("echo $num > $counterFile");

最后将计数器档案删除，再重新建立一个。就完成了这个以档案为基础的纯文字计数器。


使用者认证

在专业的 Web 站台上，常常会需要使用者的帐号及密码，也就是身份确认的动作。早期的 NCSA httpd 伺服器并没有提供这项使用者确认的功能，Webmaster 只能用手工打造一个身份确认的 CGI 程式。

自 CERN httpd 之后的 Web 伺服器大部份都提供了使用者身份确认的功能。仅管每套 Web 伺服器的设定都不太相同，但在设定上都大同小异。

以下就是 Apache 伺服器上的使用者身份确认的设定。

<Directory /home/MyMember>
AuthType Basic
AuthName MyMember
AuthUserFile /usr/local/MyMember.txt
Options Includes ExecCGI
<Limit GET POST>
require valid-user
</Limit>
</Directory>

在这个例子中，当使用者在看 MyMember 目录下所有的档案，包括图片档案及其它各式档案时，都需要使用者的帐号密码确认。而使用者的帐号及密码档都存在于 /usr/local/MyMember.txt 之中。

这个帐号密码档 /usr/local/MyMember.txt 的样子可能如下例。其中冒号前的字串是使用者帐号，冒号之后的字串是经过不可还原加密的密码，编码一般都是使用传统的 DES 编码，密码的头二个字是类似种子的字元 (salt)，本例中都是 3P。每行代表一位使用者。当然 Webmaster 要自行控制重覆帐号的情形。比较特殊是在 Win32 系统上架 Apache 的情形，冒号后的密码不可加密，因为 Win32 没有提供这方面的编码 API，因此使用者密码以明码的方式存在。

john1234:3PWudBlJMiwro
queenwan:3PFNVLNPN9W0M
noname00:3PEsXaJx5pk7E
wilson49:3PjoWb0EnaG22
rootboot:3PIt0snI6.84E
sun_moon:3PvymMeNOc.x.
nobody38:3PbskPKwV94hw

在 Apache 1.3.6 版上，可以用 ~apache/bin/htpasswd 来产生单笔的帐号及密码，但对于需要大笔资料的商业站台，可能就需要自行写程式来处理了。UNIX 上需要呼叫 crypt() 来处理编码。

在一切都设定好了之后，连线时就会在浏览器出现查核密码的视窗，如上图就是 SEEDNet 的 MySEED 网站的使用者查核机制。在输入了帐号及密码后，浏览器会将它用 BASE64 编码后，传到伺服器端。当然 BASE64 只是编码不是加密，因此在网路上这种传输的安全性仍然不高，还是有可能被中间的刽客截下，再将 BASE64 还原，这也是整个使用者认证中最美中不足的地方，或许日后支援摘要认证 (Digest) 及使用 MD5 编码后，可以解决这种问题。之后每一页仍然需要帐号及密码，只不过浏览器会帮你主动送出，不用再输入帐号密码了。这方面浏览器会保留到被关闭为止，下次重执行浏览器仍需输入第一次。

在使用者数量少时，使用上述的方法轻松又省事。但是在使用者有数万人，甚至数十万人时，会发生整个伺服器的效率都被搜寻帐号密码下拖垮，可能读取一页需要数十秒到数分钟。这种情形再使用伺服器提供的密码查核机制就不太明智了。在 Netscape Enterprise Server 上可能就可以使用 NSAPI 来开发自己的查核方式，在 IIS 上也可以用 ISAPI 过滤器开发。写 C/C++ 程式呼叫 NSAPI/ISAPI 总是很累，在 PHP 上有了另外的选择，这也是本节的主题。

PHP 的 HTTP 相关函式库提供了 header() 的函式。许多 Web 伺服器与客户端的互动，都可以使用这个函式来变戏法。例如在某个 PHP 页面最开始处，也就是第一行或第二行，加入以下的程式，可以将使用者重导到作者的网页。

<?php
header("Location: http://wilson.gs");
exit;
?>

当然，在上述程式之后的 HTML 文字或者是 PHP 程式都永远不会出现在使用者端了。

同样的道理，我们就用 header() 来变使用者认证的把戏。可以在 PHP 的最开头送出字串到使用者端，就会在使用者端出现下图的视窗。

<?php
Header("WWW-Authenticate: Basic realm=\"Member\"");
Header("HTTP/1.0 401 Unauthorized");
?>

在程式中字串 realm=\"Member\" 中的 Member 字样出现在图中，当然若使用中文字取代，浏览器端也会出现中文字，如上面的 MySEED 图。若 Web 站台使用者还有其它语文，如英文或日文，送出中文的 realm 字串似乎就比较不合适。无论如何，这都要视站台的性质及使用者定位而决定。

当然这还是很粗糙，因为除了送出视窗后，就没有下文了，帐号输入正确也好，输入错误也罢，都不会有任何的结果。我们需要再更进阶的程式来处理。

在后端的使用认证上，考虑使用资料库作为储存帐号及密码的后端，在这种架构可以容纳许多的使用者，管它一万个使用者还是十万个使用者。若您的站已有数十万个使用者帐号，那么恭喜您，您的站算是世界级的大站了。MySQL 是个不错的选择，许多站台，甚至是商业化的站台都用它来做后端的资料库。当然您要架真正的商业站台，钱不是问题的话，那可以使用口碑最广的 Oracle 资料库系列。

要在 PHP 中使用任何资料库，都要先将资料库的伺服器端及客户端设定好，之后才编译 PHP 及 Apache 系统。

准备好 MySQL 及 PHP 之后，先在 MySQL 中加入新的资料库，本例是加入 mymember，用别的名字当然也可以。MySQL 要加入资料库 (Database) 很容易，只要在 MySQL 存放 Database 的地方 mkdir 就可以了。例如在 UNIX Shell 下打

hahaha:/usr/local/mysql/data# mkdir mymember

在建立了资料库之后，尚需要建立资料表格 (Table) 方能使用。设定的表格如下，可以将它储在 /tmp/memberauth.sql 中

CREATE TABLE MemberAuth (
   Serial mediumint(9) NOT NULL auto_increment,
   Username char(8) NOT NULL,
   Password char(8) NOT NULL,
   Enable char(1) DEFAULT '0' NOT NULL,
   PRIMARY KEY (Serial)
);
档案 memberauth.sql

先看看 memberauth.sql 的这些栏位。Serial 是个自动增加的整数栏位，每输入一笔资料，就会自动加一，这当然不能是空的栏位，于是就用 NOT NULL 了。第二个栏位是 Username，代表使用者的帐号，为了统一以及适应各系统起见，设定成八个字，当然这个栏位也不能是空的。Password 是第三个栏位，为使用者的密码。第四个栏位 Enable 做为帐号是否有效的旗标，设计上 0 表示无用，1 表可用，日后还可加入其它值做不同的用途。

设计好了资料表之后，就要将资料表加入资料库了。由于常要使用 MySQL 资料库，可以到 http://www.phpwizard.net/phpMyAdmin 下载 phpMyAdmin，使用浏览器操作及管理 MySQL，轻松又方便。若使用这套 phpMyAdmin 可以在它的使用者介面上输入 memberauth.sql 加入 MySQL 中。或者也可以在 UNIX Shell 下输入下式，也是有同样的效果。

mysql mymember < /tmp/memberauth.sql

在准备好了之后，就可以输入使用者帐号及密码在 memberauth 资料表中了。当然还是使用 phpMyAdmin 方便，用 mysql 程式就要一笔笔的 INSERT 了。

接着进入了设计函式的阶段了。

<?php
//---------------------------
// 使用者认证函式 auth.inc
// Author: Wilson Peng
// Copyright (C) 1999
//---------------------------
$error401 = "/home/phpdocs/error/401.php";
if ($PHP_AUTH_PW=="") {
Header("WWW-Authenticate: Basic realm=\"超金卡会员\"");
Header("HTTP/1.0 401 Unauthorized");
include($error401);
exit;
} else {

$db_id = mysql_pconnect("localhost", "myid", "mypw");
$result = mysql_db_query("mymember","select password, enable from MemberAuth where username='$PHP_AUTH_USER'");

$row = mysql_fetch_array($result);
$MemberPasswd = $row[0];
$MemberEnable = $row[1];
if ($MemberEnable==0) {
echo "您的帐号被停用了";
exit;
}

if ($PHP_AUTH_PW!=$MemberPasswd) {
Header("WWW-Authenticate: Basic realm=\"超金卡会员\"");
Header("HTTP/1.0 401 Unauthorized");
include($error401);
exit;
}
}
?>
Copyright (C) 1999, Wilson Peng

要使用这个 auth.inc，要在每个 PHP 的第一行加入
<? require("auth.inc"); ?> 。在加入本程式的 PHP 档案都会检查帐号密码，图片等就不会检查，比起使用 Web 伺服器功能的某目录下全都检查，PHP 显得有弹性多了。

$error401 = "/home/phpdocs/error/401.php";

这行表示在使用者按下取消，或检查失败时，要显示给使用者看的档案。

if ($PHP_AUTH_PW=="") {
Header("WWW-Authenticate: Basic realm=\"超金卡会员\"");
Header("HTTP/1.0 401 Unauthorized");
include($error401);
exit;
} else {

到 else 之前，若没有传入密码，则送出输入密码的视窗。其中的 $PHP_AUTH_USER、$PHP_AUTH_PW 是 PHP 中特殊的变数，分别代表使用者确认的帐号及密码。上面的程式也是利用这二个变数来处理使用者认证。

$db_id = mysql_pconnect("localhost", "myid", "mypw");
$result = mysql_db_query("mymember","select password, enable from MemberAuth where username='$PHP_AUTH_USER'");

$row = mysql_fetch_array($result);
$MemberPasswd = $row[0];
$MemberEnable = $row[1];

若使用者有输入帐号及密码，则向资料库查询。同时查核该使用者是否仍可使用。

if ($MemberEnable==0) {
echo "您的帐号被停用了";
exit;
}

上四行程式为帐号被停用的情形。

if ($PHP_AUTH_PW!=$MemberPasswd) {
Header("WWW-Authenticate: Basic realm=\"超金卡会员\"");
Header("HTTP/1.0 401 Unauthorized");
include($error401);
exit;
}

密码错误则再次向使用者要求输入帐号及密码。

在实际使用时，可以视需要加入的网页再加入 auth.inc 这个档案，就不用连看张图形也要查一次密码，降低伺服器和使用者二端的资源。当然，和 MySQL 的连系上，可以使用 mysql_pconnect() 一直和 MySQL 伺服器连线。或是使用 mysql_connect() 每次重新连线，用这个函式要记得早点使用 mysql_close() 将资料库关闭。下面的程式 auth1.inc 是另一版本的认证程式，就是开启连线后马上关闭，释放资源的例子。

<?php
//---------------------------
// 使用者认证函式-1 auth1.inc
// Author: Wilson Peng
// Copyright (C) 1999
//---------------------------
$error401 = "/home/phpdocs/error/401.php";
if ($PHP_AUTH_PW=="") {
Header("WWW-Authenticate: Basic realm=\"超金卡会员\"");
Header("HTTP/1.0 401 Unauthorized");
include($error401);
exit;
} else {

$db_id = mysql_connect("localhost", "myid", "mypw");
$result = mysql_db_query("mymember","select password, enable from MemberAuth where username='$PHP_AUTH_USER'");

$row = mysql_fetch_array($result);
$MemberPasswd = $row[0];
$MemberEnable = $row[1];
mysql_close($db_id);
if ($MemberEnable==0) {
echo "您的帐号被停用了";
exit;
}

if ($PHP_AUTH_PW!=$MemberPasswd) {
Header("WWW-Authenticate: Basic realm=\"超金卡会员\"");
Header("HTTP/1.0 401 Unauthorized");
include($error401);
exit;
}
}
?>
Copyright (C) 1999, Wilson Peng

在实际应用时，可以在资料库中加入更多功能，如使用者分组 (CUG) 的功能；或是加入时间栏位，可做到期检查。其中的变化，端赖设计者的巧思了。


聊天室

聊天室，是 Web 站上打发无聊人士的秘密武器。同时，站长或其它人员也可以在这儿杀时间。甚至发生一段轰轰烈烈的网路恋情呢，就算没有，起码可以增加打字的速度。

聊天室，其实就是多人共同使用的 CGI 程式。程式将每个人输入的字串，依系统接收完成的时间整理过后，再送给各个使用者。而 Web 聊天室和 BBS 的聊天室不同的地方是 BBS 聊天室可以每收到一句话，就马上分送给每位在聊天室的网路使用者；Web 由于 CGI 程式不能像 BBS 的 telnet 一直连线，Web CGI 必须以最快的速度将资讯送出，然后结束连线。会形成这种情形，就是因为 Web 聊天室还是使用 HTTP 传输协定，在 HTTP 实作的版本，无论是 0.9、1.0 或是 1.1 版都不能长期占据网路连线的 Port。

为了解决资料无法马上传输的问题，及更新讯息的问题，Netscape 在 3.0 版浏览器之后使用了新的技术，而 Internet Explorer 也实作了这些 Netscape 研发出来的技术。Netscape 将它分成 Server Push 及 Client Pull 二种技术。Server Push 由 Web 伺服器将资料以多重 MIME 编码，送给使用者端，目前较少网站使用这种方式；而 Client Pull 则利用了 HTML 的 meta 标签，并利用 http-equiv="Refresh" 的属性，表示资料要重新载入，至于载入时间，则利用 content 属性来达成。

<meta> 标签通常都放在 <head>..</head> 的区段中，以便让浏览器可以仅早准备更新使用者端的网页。下面为 meta 和 PHP 合用的例子，设定为每十五秒重新载入一次。

<meta http-equiv="Refresh" content="15; url=<? echo $PHP_SELF; ?>">

如果不用 Server Push 或是 Client Pull 来做聊天室，是否有其它的方法，让 Web 的浏览器能聊天呢？答案是肯定的。可以使用 Java 或是 ActiveX (限 IE4、5) 来做甚至自行开发专属的 Browser Plug-in 程式 (如奇摩的聊天室)，不过这就和 PHP 没有关系了，不是我们要的重点。

除此之外，由于定期更新所有网友的留言，为了怕写了一半因为 refresh 而被清掉尚未写好的字串，因此将聊天室以 frame 的页框技术来做是有必要的。下例就是聊天室的主程式。

<html>
<head>
<title>聊天室</title>
</head>
<frameset rows="*,40" border=1>
<frame src="list.php" name=list scrolling=auto>
<frame src="post.php" name=post scrolling=no>
<noframes>
<body>
本聊天室需使用页框，您的浏览器无法使用
</body>
</noframes>
</frameset>
</html>

程式中以 frame 带出二支 PHP 程式，建议将它们放在同一目录之中，例如 /chatroom，以便日后维护。另外，为了 list.php 及 post.php 可以使用相同的变数，下例将共通的变路路径放在 env.inc 中，可以将它放在 /chatroom 或是 Web 伺服器 (如 Apache) 的 PHP include 设定路径中。

<?php
// 档名: env.inc
$tempdir="/tmp/";
$chatfile="/tmp/abc";
?>

聊天室的后端可以设计的很简单，单纯的使用档案来做，也可以弄个资料库，将聊天的内容丢入，若是真的很在意系统效率，或许可以考虑使用 UNIX 的行程通讯 IPC 了。

本节即将使用者留言的内容放入档案中，在这儿的例子大部份都使用 UNIX/Linux 的外部指令。若系统无该指令 (或称程式)，请自行安装相关程式。

实际上将资料丢入档案中会比使用资料库还快，若还很在乎速度，可以在 UNIX 机器中装上 RAM Disk，再将档案的存取路径都设在该 RAM Disk 上，保证存取速度能满足严苛的要求。在有些以高速度搜寻引擎为号召的网站，甚至将整个资料库资料都放到 RAM Disk 中，马上让系统速度提高十倍百倍，而且 RAM 的价格和其它解决方案相比的话还算很便宜。若使用 Windows NT，那就没办法了，看微软什么时候提供，或者用 Third Party 的产品了。

有些使用者可能对 UNIX 还不是很熟，在这儿先简介会用到的指令：

touch: 建立新档案，或修改旧档的最后更新日期。

echo 加上二个大于符号: 将字串显示转向到指定的地方。

tail: 显示档案最后数行的资料，内定值为十行，可使用减号加数字，修改欲显示的行数。

下面为送出及处理留言字串的程式，程式用到 env.inc 的档案。

<?php
// 档名: post.php
require("env.inc");
if (($chatuser!="") and ($chattext!="")) {
$chatstr="<font color=8080ff>".date("h:i:s")."</font>-<font color=ff8080>".$chatuser."</font>: ".$chattext;
$cmdstr="echo \"".$chatstr."\" >> ".$chatfile;
if (!file_exists($chatfile)) passthru("touch ".$chatfile);
passthru($cmdstr);
}
?><html>
<body bgcolor=ffffff leftmargin=0 topmargin=0 marginheight=0 marginwidth=0>
<form action=<? echo $PHP_SELF; ?> method=post>
<table border=0 width=100%><tr>
<td align=right>匿称:</td>
<td><input type=text name=chatuser size=8 value="<? echo $chatuser; ?>"></td>
<td align=right>发言:</td>
<td><input type=text name=chattext size=30 maxlength=500></td>
<td><div align=right><input type=submit value="送出"></td>
</tr></table>
</form>
</body>
</html>

程式先检查是否有输入字串，若无匿名及发言内容字串则显示发言的表单 (Form)，若有资料则将字串及当时时间存入档案中 (利用 UNIX 的转向指令)。当然，为了防止错误，先检查是否有档案可存档，若没有则先 touch 该档，例中的档案就是 /tmp/abc。

<html>
<meta http-equiv="Refresh" content="5; url=<? echo $PHP_SELF; ?>">
<meta content="text/html; charset=gb2312" http-equiv=Content-Type>
<body bgcolor=ffffff leftmargin=0 topmargin=0 marginheight=0 marginwidth=0>
<?
// 档名: list.php
require("env.inc");

if (!file_exists($chatfile)) {
echo "尚未开张</body></html>";
exit;
}

$uniqfile=$tempdir.uniqid(rand());
$shellcmd="/usr/bin/tail -50 ".$chatfile. " > ".$uniqfile;
passthru($shellcmd);
$chatfilearray=file($uniqfile);
$j=count($chatfilearray);
for ($i=1; $i<=$j; $i++) {
echo $chatfilearray[$j-$i]."<br>\n";
}
unlink($uniqfile);
?>
</body>
</html>

上面的程式就是使用 Client Pull 的技术，每五秒就重新更新一次。同样地，它也 require 共用的 env.inc 档，要改变其中的变数时，马上就可以让所有的程式用到，这对开发网站来说，是蛮重要的方法，可以将网页程式中都会出现的地方。例如 Copyright (C) 1996-2000 的字串，放在一个档案上，到了新的一年，只要改一个档，整个站都改了。

if (!file_exists($chatfile)) {
echo "尚未开张</body></html>";
exit;
}

$uniqfile=$tempdir.uniqid(rand());
$shellcmd="/usr/bin/tail -50 ".$chatfile. " > ".$uniqfile;
passthru($shellcmd);

程式先检查有没有使用者发送聊天内容的档案 /tmp/abc，若没有就显示尚未开张，等使用者送聊天内容。若已有聊天资料，就抓出最后五十笔，在在另外的档案中准备显示。

$chatfilearray=file($uniqfile);
$j=count($chatfilearray);
for ($i=1; $i<=$j; $i++) {
echo $chatfilearray[$j-$i]."<br>\n";
}
unlink($uniqfile);

将档案读入阵列变数 $chatfilearray 中，并以最后的资料最先显示的方式送给浏览器端，当然可以使用对阵列排序的方法，但确定一定时最后存入的资料在最后面，将它排序实在很浪费 CPU 时间，因此就从最后 echo 到最前面的资料。使用完成还要用 unlink() 指令，将临时档杀掉。

这样就完成了最粗糙的聊天室系统，当然还有很多改进的空间，例如统计使用人数、呼叫个人....等，就要 Webmaster 再精雕细琢了。


留言版

大部份的网站，都会考虑到和使用者之间的互动关系。这时，用留言版的功能，可让使用者留下到此一游，或者是一些和网站的互动讯息。

在设计上，可以很简单的只留下使用者的短篇留言，也可以设计到依性质分门别类很复杂的 Web BBS 系统。当然，要如何打造一个属于自己网站的留言版，就端赖网站的性质以及 Web 网站开发人员的巧思了。

在这里介绍的范例，是简单的列示所有留言的内容。供使用者可以一次看到多笔留言的资料。系统的后端存放留言是用 Oracle 7.x 版的资料库系统。范例中的资料库 (database) 名称为 WWW，连线的使用者帐号为 user38、密码为 iam3849。要直接使用本例，必须先执行下面的 SQL 指令，建立 guestbook 的资料表格。

CREATE TABLE guestbook (
  serial    varchar2(255)  not null,
  ref       varchar2(255)  null,
  id        char(8)        not null,
  alias     varchar2(32)   not null,
  ip        varchar2(1024) null,
  msgdate   date           not null,
  email     varchar2(1024) null,
  msg       varchar2(2000) not null,
  flag      char(1)        default 1,
  primary key(serial)
);

上面的 SQL 各栏位说明及详细资料见下表

序号 | 栏位 | 名称 | 资料形态 | 资料长度 | 栏位说明 | 限制 | Key
0 | 流水号 | serial | varchar2 | 255 |  | NN | PK
1 | 参照流水号 | ref | varchar2 | 255 | 暂保留。供回 覆留言功能用 |  |
2 | 帐号 | id | char | 8 | 使用者帐号 | NN |
3 | 匿名 | alias | varchar2 | 32 | 显示的名字 | NN |
4 | 网址 | ip | varchar2 | 1024 | 上网 IP |  |
5 | 时间 | msgdate | date |  |  | NN |
6 | 电子邮件 | email | varchar2 | 1024 |  |  |
7 | 留言内容 | msg | varchar2 | 2000 |  | NN |
8 | 显示旗标 | flag | char | 1 | 0: 不显示 1: 显示 (内定) |  |

在本节的留言版相关程式中，若加入了使用者认证功能，则可以在 guestbook 资料表的帐号栏中留下使用者的认证帐号，方便 Webmaster 日后找寻不当的发信者。在这儿先留下栏位，让需要的读者们实习了。

要使用本节的程式，首先要先装好 Oracle 7.x 版，并确定 Web Server 端的 SQL*net 可以顺利连上 Oracle 资料库。之后还要在编译 PHP 时加入 --with-oracle=/home/oracle/product/7.3.2 的选项，当然改成其它的路径也没关系，只要该路径真的是 Oracle 的路径即可。有关 Oracle 装设及使用上的细节请参考相关书籍。

下面的程式是将使用者的留言资讯加到 guestbook 留言资料表中。若要设定使用者认证功能，可在程式刚开始时检查，发留言者就可以确认身份，而读取留言就不必身份检查。这种设定可以防止不当发言，却又不会让留言功能只有少数人使用。

<?php
//---------------------------
// 新增留言程式 addmsg.php
// Author: Wilson Peng
// Copyright (C) 2000
//---------------------------
//
// 可自行在这儿加入身份检查功能
//
if (($alias!="") and ($msg!="")) {
putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");
putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);

$serial=md5(uniqid(rand()));
$ref="";
$id=$PHP_AUTH_USER;
$ip=$REMOTE_ADDR;
$msg=base64_encode($msg);
$flag="1";
$query="INSERT into guestbook(serial, ref, id, alias, ip, msgdate, email, msg, flag) values('$serial', '$ref', '$id', '$alias', '$ip', sysdate, '$email', '$msg', '$flag')";

ora_parse($cursor, $query) or die;
ora_exec($cursor);

ora_close($cursor);
ora_logoff($handle);

Header("Location: ./index.php");
exit;

} else {
?>
<html>
<head>
<title>填写留言</title>
</head>
<body bgcolor=ffffff>
<form method=POST action="<? echo $PHP_SELF; ?>">
<table border=0 cellpadding=2 width=395>
<tr>
<td nowrap><font color=004080>代号小名</font></td>
<td width=20%><input type=text name=alias size=8></td>
<td nowrap><font color=004080>电子邮件</font></td>
<td width=50%><input type=text name=email size=18></td>
</tr>
<tr>
<td nowrapvalign=top><font color=004080>内容</font></td>
<td width=80% colspan=3><textarea rows=5 name=msg cols=33></textarea></td>
</tr>
<tr>
<td width=100% colspan=4 align=center>
<input type=submit value="送出留言">
<input type=reset value="擦掉留言">
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
}
?>

上面的程式在执行时，先检查变数 alias 和 msg 是否有资料，若无资料则送出填写留言的表格到使用者端，供使用者填写留言。

若使用者填好留言，按下 "送出留言" 的按钮后，则执行程式的前半部份。

程式大概分成五部份

  1. 设定 Oracle 需要的环境变数
  2. 连上 Oracle 资料库
  3. 整理资料，送入 Oracle 中
  4. 结束与 Oracle 的连线
  5. 结束程式，显示最新的留言资料

在设定 Oracle 环境的部份，用 PHP 的函式 putenv()，可设定作业系统层的环境变数。要使用中文要记得加入下面这行

putenv("NLS_LANG=american_taiwan.zht16big5");

之后就使用 Oracle 函式库的功能: ora_logon() 等等。详见 Oracle 资料库函式库。利用这个函式库，可以很轻易的操作 Oracle 资料库。

再来就是整理资料，以便置入 Oracle 资料库中

$serial=md5(uniqid(rand()));
$ref="";
$id=$PHP_AUTH_USER;
$ip=$REMOTE_ADDR;
$msg=base64_encode($msg);
$flag="1";
$query="INSERT into guestbook(serial, ref, id, alias, ip, msgdate, email, msg, flag) values('$serial', '$ref', '$id', '$alias', '$ip', sysdate, '$email', '$msg', '$flag')";

$serial 变数为独一无二的字串，程式先乱数产生独特的字串，再用 md5 编码，将字串弄乱，形成类似杂凑处理后的无意义字串。由于字串长，又变得很乱，可防止使用者，尤其是骇客或飞客利用序号来戳系统。

$ref 变数目前是无效的。$id 变数为使用者认证用，若在程式开始处有加入使用者认证的程式，则 $PHP_AUTH_USER 会变成使用者的帐号，传入 $id 变数中。

至于使用者写的字串，为了防止资料库或处理时的复杂性甘脆将它用 BASE64 编码。可以让中文字的奇怪字元一字消失，当然这是锯箭法，不过对 Web 程式而言，执行快速、修改方便才是最重要的，实在没有必要再浪费精力去处理这些中文的冲码问题了。值得注意的是使用 BASE64 编码，会让字串膨胀大约 1/3，若资料库的储存空间有限，可能就不适合用这个方法了，话又说回来，现在硬碟便宜，随便就是十几 GB 以上，应该不会考虑资料库空间有限的问题才对。

最后，将变数整理成 $query 字串，供资料库执行 SQL 指令使用就可以了。

ora_parse($cursor, $query) or die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);

要执行 Oracle 的 SQL 指令前，要先经过 parse 的动作。若在前面加上 @ (如: @ora_prase();)，可以不让使用者看到错误讯息。在执行 query 指令后，就可以关闭与 Oracle 之间的连线了。

Header("Location: ./index.php");
exit;

这二行让浏览器重导到 index.php。让使用者看到他的新留言，就完成了留言的动作。

之后来看看留言的内容显示程式。

<html>
<head>
<meta content="text/html; charset=gb2312" http-equiv=Content-Type>
<title>留言版</title>
</head>
<body bgcolor=ffffff>
<?php
//---------------------------
// 留言显示程式 index.php
// Author: Wilson Peng
// Copyright (C) 2000
//---------------------------

$WebmasterIPArray = array(
"10.0.1.30", // 管理人员甲的机器 IP
"10.0.2.28" // 管理人员乙的机器 IP
);

$WebmasterIP=false;
for ($i=0; $i<Count($WebmasterIPArray); $i++) {
if ($REMOTE_ADDR == $WebmasterIPArray[$i]) $WebmasterIP=true;
}

putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");
putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="SELECT serial, ref, id, alias, ip, TO_CHAR(msgdate, 'yyyy/mm/dd hh:mi:ss'), email, msg FROM guestbook where flag='1' order by msgdate desc";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
$i=0;
while(ora_fetch($cursor)) {
$guestbook[$i][0] = ora_getcolumn($cursor,0);
$guestbook[$i][1] = ora_getcolumn($cursor,1);
$guestbook[$i][2] = ora_getcolumn($cursor,2);
$guestbook[$i][3] = ora_getcolumn($cursor,3);
$guestbook[$i][4] = ora_getcolumn($cursor,4);
$guestbook[$i][5] = ora_getcolumn($cursor,5);
$guestbook[$i][6] = ora_getcolumn($cursor,6);
$guestbook[$i][7] = ora_getcolumn($cursor,7);
$i++;
}
ora_close($cursor);
ora_logoff($handle);

echo "<a href=addmsg.php>新增留言....</a><p>\n";

if ($QUERY_STRING!="") {
$page = $QUERY_STRING;
} else {
$page = 0;
}

$i=count($guestbook);
$msgnum=20; // 每页二十笔
$start = $page * $msgnum;
$end = $start + $msgnum;
if ($end > $i) $end=$i;
$totalpage=$i/$msgnum;

$pagestr="";
if ($page>0) $pagestr=$pagestr."<a href=index.php?".($page-1).">&lt;上页</a> - ";
$pagestr=$pagestr."[第 ";
for ($i=0; $i<$totalpage; $i++) {
if ($i!=$page) {
$pagestr = $pagestr."<a href=index.php?$i>".($i+1)."</a> ";
} else {
$pagestr = $pagestr.($i+1)." ";
}
}
$pagestr=$pagestr." 页] ";
if ($page<($totalpage-1)) $pagestr=$pagestr."- <a href=index.php?".($page+1).">下页&gt;</a> ";

$pagestr="<div align=center>$pagestr</div>";
echo "<p>".$pagestr."<hr><p>\n";

for ($i=$start; $i<$end; $i++) {
echo "<p><hr><p>\n";
echo "<p>\n<font color=e06060>".$guestbook[$i][5]."</font> &nbsp; ";
if ($guestbook[$i][6]!="") echo "<a href=mailto:".$guestbook[$i][6].">";
echo "<strong>".$guestbook[$i][3]."</strong>";
if ($guestbook[$i][6]!="") echo "</a>";
echo "<br>\n";
if ($WebmasterIP) echo "<a href=erase.php?".$guestbook[$i][0].">删除本篇!!</a> (".$guestbook[$i][2].") &nbsp; ";
echo "<font size=-1 color=c0c0c0>from: ".$guestbook[$i][4]."</font><p>\n";
$msg=base64_decode($guestbook[$i][7]);
$msg=nl2br($msg);
echo $msg;
echo "<p>\n";
}

echo "<p><hr><p>\n";
echo $pagestr;

?>
</body>
</html>

在显示留言的部份，考虑到留言内容若很多，加上网路慢的话，可能会让使用者在线路慢的时候拖累整个资料库，因此，尽快的连上资料库，取得需要的资料后，马上关闭资料库，再慢慢送给使用者，应是最好的对策。

程式分成四部份

  1. 初始化
  2. 取资料库中的资料
  3. 计算要显示的页数
  4. 送出资料

$WebmasterIPArray = array(
"10.0.1.30", // 管理人员甲的机器 IP
"10.0.2.28" // 管理人员乙的机器 IP
);

$WebmasterIP=false;
for ($i=0; $i<Count($WebmasterIPArray); $i++) {
if ($REMOTE_ADDR == $WebmasterIPArray[$i]) $WebmasterIP=true;
}
// 之后初始化 Oracle 程式略

显示程式和留言程式的初始化部份都差不多，但显示程式多加了一个功能，设定 Webmaster 的电脑。将 Webmaster 使用的 IP Address 加在 $WebmasterIPArray 阵列变数中，可以在显示留言时，显示删除留言的字串，方便处理不当的留言。

$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="SELECT serial, ref, id, alias, ip, TO_CHAR(msgdate, 'yyyy/mm/dd hh:mi:ss'), email, msg FROM guestbook where flag='1' order by msgdate desc";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
$i=0;
while(ora_fetch($cursor)) {
$guestbook[$i][0] = ora_getcolumn($cursor,0);
$guestbook[$i][1] = ora_getcolumn($cursor,1);
$guestbook[$i][2] = ora_getcolumn($cursor,2);
$guestbook[$i][3] = ora_getcolumn($cursor,3);
$guestbook[$i][4] = ora_getcolumn($cursor,4);
$guestbook[$i][5] = ora_getcolumn($cursor,5);
$guestbook[$i][6] = ora_getcolumn($cursor,6);
$guestbook[$i][7] = ora_getcolumn($cursor,7);
$i++;
}
ora_close($cursor);
ora_logoff($handle);

在初始化后，就可以连上 Oracle 资料库，将留言的资料取出放在 $guestbook 阵列中。取得资料后，就赶紧将资料库关闭，再来处理 $guestbook 阵列的资料了。

if ($QUERY_STRING!="") {
$page = $QUERY_STRING;
} else {
$page = 0;
}

这一段程式判断是要显示第几页，内定值是显示第一页。要显示第三页的页面，需要使用 http://xxxxxx/index.php?2 的格式，也就是传入 $QUERY_STRING，余类推。之后的数行程式，都是用来处理显示的页数及笔数的资料。

$msgnum=20; // 每页二十笔

要改变每页的显示笔数，可以改 $msgnum 变数。程式的内定值为 20 笔。

for ($i=$start; $i<$end; $i++) {
echo "<p><hr><p>\n";
echo "<p>\n<font color=e06060>".$guestbook[$i][5]."</font> &nbsp; ";
if ($guestbook[$i][6]!="") echo "<a href=mailto:".$guestbook[$i][6].">";
echo "<strong>".$guestbook[$i][3]."</strong>";
if ($guestbook[$i][6]!="") echo "</a>";
echo "<br>\n";
if ($WebmasterIP) echo "<a href=erase.php?".$guestbook[$i][0].">删除本篇!!</a> (".$guestbook[$i][2].") &nbsp; ";
echo "<font size=-1 color=c0c0c0>from: ".$guestbook[$i][4]."</font><p>\n";
$msg=base64_decode($guestbook[$i][7]);
$msg=nl2br($msg);
echo $msg;
echo "<p>\n";
}

这一段程式就是真正显示留言资料给使用者看的程式了。利用 for 回圈，将 $guestbook 阵列的资料按照设定的页数取出，显示给使用者看。值得一提的是，若看留言的机器 IP 为 $WebmasterIPArray 变数阵列中的一个元素的话，则会在留言者的匿称后显示 "删除本篇!!" 的字串，供管理人员删除不当留言。

以下即为删除留言的程式。

<?php
//---------------------------
// 留言删除程式 erase.php
// Author: Wilson Peng
// Copyright (C) 2000
//---------------------------
putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");
putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="UPDATE guestbook set flag='0' where serial='".$QUERY_STRING."'";
ora_parse($cursor, $query) or die;
ora_exec($cursor);

ora_close($cursor);
ora_logoff($handle);

Header("Location: ./index.php");
?>

其实这个程式很单纯，只要打开 Oracle 资料库，将欲删除的序号那笔资料的 flag 栏位设成 0 就可以了，不用将资料真的从资料库上移除。


意见信箱

当使用者在参观网页时，有时想 Email 给 Webmaster 但是再执行 Email 程式总是不方使，使用者在按下 mailto:abc@abc.abc.tw 还要花段时间打开自己这儿的 Outlook 岂不麻烦。这时，若是 Homepage 能提供写信的功能就太酷了。同时意见信箱还是以提醒或者要求使用者一定要填入哪些资料，这对资料仓储而言，也是了解客户的最好方法。

整个意见信箱其实就像 Outlook 或者其它电子邮件软体，开启寄发新邮件的功能，不同的地方在于使用 Outlook 时，寄件人是固定的，而要填上收件人的地址；而网站上的意见信箱，收件人几乎都是 Webmaster，反而是要填上寄件人的电子邮件地址。当然另一个不同之处是 Outlook 处理寄信的动作；而意见信箱是由 Web 伺服器处理使用者发送的信件。

在更进阶的设计后，甚至可以变成 Web Mail，像 HotMail 般，只要用浏览器就可以在任何地方用任何电脑收发信件。

当然，也可以做进阶的设计，将使用者的意见储放在资料库中，留待日后整理成更有用的资料。不过这就不是这节要讨论的部份了。

在 UNIX 的系统中，大部份和电子邮件有关的问题都和 sendmail 有关，除非系统管理员较偏执，才会用其它的系统。因此，意见信箱的设计开发，也是使用 sendmail 来达成所需要的功能。而 WindowsNT 系统中，由于没有 sendmail 程式，需要另行符费购买，或使用其它的邮件派送软体，因此本节程式无法在 WindowsNT 系统执行。

程式的流程如下

  1. 送出填写意见的表格到使用者的浏览器上。
  2. 使用者填好后送出资料到伺服器。
  3. 伺服器将使用者填的资料整理后，存入档案。
  4. 利用 UNIX 的管道指令及 sendmail 程式将意见送给系统管理人员。
  5. 伺服器通知使用者意见已送出。

以下就是完整的范例程式

<html>
<head>
<title>意见信箱</title>
</head>
<body>
<?php

$mailto="yourname@hahaha.com.tw";

if (($topic!="") and ($Email!="") and ($body!="")) {
$tmpfilename = tempnam("/tmp", "dm");
$fp = fopen($tmpfilename, "w");

fwrite($fp, "From: ".$Email."\n");
fwrite($fp, "Subject: ".$topic." <访客来信>\n\n");
fwrite($fp, $body."\n\n");
fwrite($fp, "送信人:".$sender."\n");
fwrite($fp, "发信IP:".$REMOTE_ADDR."\n");
fclose($fp);

$execstr="cat ".$tmpfilename." | /usr/lib/sendmail ".$mailto;
exec($execstr);

$execstr="echo $sender $REMOTE_HOST >> /var/log/mail.log";
exec($execstr);
echo "信件已送出！！本站工作人员尽快处理您的问题<p><br><br><br><br><br>";
} else {
?>
 <form action=<? echo($GLOBALS["PHP_SELF"]); ?> method=post>
<table border=0>
<tr><td>主题</td><td><input type=text size=20 name=topic></tr>
<tr><td>姓名</td><td><input type=text size=20 name=sender></tr>
<tr><td>Email</td><td><input type=text size=20 name=Email></tr>
<tr><td colspan=2>内容<br><textarea cols=26 rows=10 name=body></textarea></td></tr>
<tr><td colspan=2><div align=right><input type=submit value="送出"></td></tr>
</table>
</form>
<?
}
?>
</body>
</html>

程式在 PHP 处理剖析时，先判断使用者是否填入资料。若没有资料则送出意见表单给使用者，若有资料则表示使用者已输入相关的资料，则进行处理。

处理的原则是先将使用者填写的资料写入暂存档案中，但为了防止多使用者同时填写意见时，会造成档案被覆盖，因此需要每次都有不同的暂存档，这个问题可以使用 tempnam() 函式来解决，用来建立独一无二的临时档。 在档名的问题处理完后，利用 PHP 提供的档案处理功能，将使用者填写的资料写入方才建立的档案中。将档案关闭就初步完成。即使资料没有邮寄出去，系统仍能保存意见档案。值得注意的是，若存放在 /tmp 中，有些 UNIX 的系统 (如 SUN Solaris) 会在重新启动系统时遗失这些资料，而有些则不会 (如 Slackware Linux)，这方面可能要先规划好，要保存的话需要存在不会被清掉的目录下。

UNIX 中最强的功能就是管道，可以利用管道来处理寄信的动作，如下

cat tmpfilename | /usr/lib/sendmail wilson@biglobe.net.tw

这个指令的意思为将档案送给管道彼端的 sendmail 程式，而 sendmail 将该档案寄给 wilson@biglobe.net.tw。因此可利用本管道指令将意见寄给 Webmaster 或是客服部门的人员。若要寄给多人，可利用 mailing list 或是多用几次寄信的管道指令。

在 PHP 程式中要使用 UNIX 的程式或者外部指令，可以使用 exec() 函式来做。寄完信后，通知使用者已经在处理了，就完成了意见处理的初步工作。当然之后要如何处理，就不是 PHP 书中所能讨论的。

当然执行寄信的方式不只一种，可以利用 mail() 函式来寄信，亦可利用 UNIX 的网路 socket 来做，所谓戏法人人会变，巧妙各有不同。


广告轮播

网路广告，变成了 Internet 上的热门学问。而 468x60 更变成了广告人员绞尽脑汁的尺寸。

在处理广告时，若能直接使用浏览器将广告的 468x60 图档送到处理广告的伺服器中，相信是件很舒服的事，不用再开 FTP 程式，搞大半天只为了 upload。

这个问题，是所有 Web CGI 程式的痛，包括 ASP、Prel....等等，都需要再经过系统元件的增加才能达成。号称最强的 Web CGI 程式: PHP，在这方面的表现没有令人失望，甚至傲视其它的 CGI 工具。

File Upload 功能在 RFC 1867 文件有有详细的说明，是利用特殊的文件格式 (content-type) multipart/form-data。值得注意的是浏览器一定要用 Netscape 3.0 以上或 MS Internet Explorer 4.0 以上的版本才能将档案上传。

先看下面的 HTML 原始码

<form enctype="multipart/form-data" action="next.php" method=post>
您的大名: <input type=text name=user><br>
档案名称: <input name="myfile" type="file"><br>
<input type="submit" value="送出">
</form>

在 form 的标签中，要加入 enctype="multipart/form-data" 的字串，表示使用者输入的资料上有档案上传，同时 method 一定要用 POST 而不能用 GET。

在上面的码中，若使用者姓名填入 Wilson Peng，并选 c:\myphoto.gif 的档案，在使用者按下送出键后，浏览器则传送出下面的 POST 资料。

Content-type: multipart/form-data, boundary=AaB03x

--AaB03x
content-disposition: form-data; name="user"

Wilson Peng
--AaB03x
content-disposition: form-data; name="myfile"
Content-type: multipart/mixed, boundary=BbC04y

--BbC04y
Content-disposition: attachment; filename="myphoto.gif"
Content-type: image/gif
Content-Transfer-Encoding: binary

  ...myphoto.gif 内容略...
--BbC04y--
--AaB03x--

看到上面的资料中，boundary=AaB03x 即为分开不同栏位资料的讯息，其中的 AaB03x 编码方法，视浏览器的版本不同而异，通常是浏览器杂凑产生的。之后就可以看到用 --AaB03x 来隔开不同的栏位。

以上面为例，处理 form 的 action 程式 next.php，会主动产生四个变数，见下表

变数名 | 说明
$myfile | 即上传的档案内容
$myfile_name | 上传档案在使用者端的名称
$myfile_size | 上传档案的大小
$myfile_type | 上传档案的格式，如 "image/gif"

在 next.php 程式要做的最重要动作，就是好好的使用这四个变数，否则程式一结束，使用者上传的档案就消失了。因此，要先将 $myfile 复制到存放广告图的目录中

copy($banner,"/home1/biglobe3/ad/".$banner_name);

这行程式就是将档案存在 /home/htdocs/ad 的目录中，就上面的例子而言，就将档案存到 /home/htdocs/ad/myphoto.gif。重要的是，存放的目录不能是 Web Server 无法读到的目录，而应放在网站的 Homepage 所在目录中，才可以在网路上看到。

或许程式要更细部的处理，例如比对取得的档案大小与系统回报的是否相同....等等，就可以用 $myfile_size 变数了。

若在 form 中设定 input file 的名称改掉，则在 Upload 的变数也一起改，如

<input name="upfile" type="file">

则变数就改成 $upfile、$upfile_name、$upfile_size、与 $upfile_type。

因此，下面的例子就利用 File Upload 及 Oracle 7.x 后端资料库，将档案放在 Web Homepage 目录中，相关资讯则存在 Oracle 中。当然，加上使用者认证，让有帐号的使用者才能上传图片，可避免刽客 (cracker) 等将不雅或不适当的广告上传。例中有关资料库的设定和 5.4 留言版的设定相同。

<html>
<head>
<?php
// adadd.php
if (($banner=="") and ($url=="")) {
?>
<title>新增广告</title>
</head>
<body>
加权值数字愈大，图片出现的机率就愈高，内定值为 1。
<FORM ENCTYPE="multipart/form-data" ACTION="adadd.php" METHOD=POST>
<table border=0>
<tr><td align=right>广告 Banner: </td><td><input name=banner TYPE="file"></td></tr>
<tr><td align=right>广告网址 URL: </td><td><input name=url type=text size=30></td></tr>
<tr><td align=right>辅助字串 ALT: </td><td><input name=alt type=text size=30></td></tr>
<tr><td align=right>广告说明: </td><td><input name=descript type=text size=30></td></tr>
<tr><td align=right>显示加权: </td><td><input name=priority type=text size=5 value=1></td></tr>
<tr><td colspan=2 align=right><input type="submit" VALUE="确定"></td></tr>
</table>
</FORM>
<?
} else {
if (file_exists("/home/htdocs/ad/".$banner_name)) {
CommonHeader("档案 ".$banner_name." 已存在");
echo "<p><br><br>广告档案已经存在\n<p><br><br></body></html>";
exit;
};

copy($banner,"/home1/biglobe3/ad/".$banner_name);

putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");
putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="insert into ad(url, banner, alt, descript, priority) values('$url', '$banner_name', '$alt', '$descript', $priority)";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);

echo "<title>广告新增完成</title>";
echo "</head>";
echo "<body>";
echo "<a href=".$url."><img src=/ad/".$banner_name." alt=\"".$alt."\" border=0></a><p>";
echo "<ul type=disc>";
echo "<li>广告网址: ".$url;
echo "<li>辅助字串: ".$alt;
echo "<li>广告说明: ".$descript;
echo "<li>显示加权: ".$priority;
echo "</ul>";
}

?>
</body>
</html>

当然要使用上面的程式之前别忘了先增加 ad 资料表，SQL 及栏位如下

CREATE TABLE ad (
  url       varchar2(1024) not null,
  banner    varchar2(1024) not null,
  alt       varchar2(255)  null,
  descript  varchar2(255)  null,
  priority  number(4) not null default 1
);

序号 | 栏位 | 名称 | 资料形态 | 资料长度 | 栏位说明
0 | 广告网址 | url | varchar2 | 1024 |
1 | 图片路径 | banner | varchar2 | 1024 |
2 | 字串显示 | alt | varchar2 | 255 |
3 | 广告说明 | descript | varchar2 | 255 |
4 | 显示加权 | priority | number | 4 | 1 为内定值，0 表停用

值得一提的是在这加入了加权的功能，若一个广告要提升曝光率，则可以将显示加权的栏位数字加大，例如 5，它的出现机率就会比只设为 1 的高五倍。

<?php
// ad.php
putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");
putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="SELECT url, banner, alt, priority FROM ad where priority > 0";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
$i=$pricount=0;
while(ora_fetch($cursor)) {
$ad[$i][0] = ora_getcolumn($cursor,0);
$ad[$i][1] = ora_getcolumn($cursor,1);
$ad[$i][2] = ora_getcolumn($cursor,2);
$ad[$i][3] = ora_getcolumn($cursor,3);
$pricount += $ad[$i][3];
$i++;
};

ora_close($cursor);
ora_logoff($handle);

srand((double)microtime()*1000000);
$pri = rand(1,$pricount);
$pricount=0;
for($i=0; $i<count($ad); $i++) {
$pricount += $ad[$i][3];
if ($pri <= $pricount) {
$ad1[]="<a href=".$ad[$i][0]." target=new><img src=/ad/".$ad[$i][1]." width=468 height=60 border=0 alt=\"".$ad[$i][2]."\"></a>";
}
}
echo $ad1[0];

?>

上面的程式为公用的广告显示程式，其中的 $pricount 变数为所有广告 priority 加起来的和。程式先将所有的广告资讯读到阵列变数 $ad 中，随即关上资料库。再依时间取乱数种子，之后再从 1 到 $pricount 间随机取一个数字。

网页中要用广告程式，只要在需要广告的地方加上 <? include("ad.php"); ?> 就可以了，当然 Include 的路径 (在 httpd.conf 中) 要先设好才行。

上面的程式还有改进空间，可以加入广告的 Click Log 功能，或是显示的 Log 功能，改动显示加权的程式....等等，就不做范例了，毕竟在这儿是要介绍 PHP 的实际应用及程式开发，而不是套件开发。真的需要现成的广告套件，不妨到 http://www.phpwizard.net/phpAds，这是一套用 PHP 开发出来的广告程式。


PHP 函式索引

共有 967 个函式

  • Abs: 取得绝对值。
  • Acos: 取得反余弦值。
  • ada_afetch: 取得资料库的传回列。
  • ada_autocommit: 开关自动更动功能。
  • ada_close: 关闭 Adabas D 连结。
  • ada_commit: 更动 Adabas D 资料库。
  • ada_connect: 连结至 Adabas D 资料库。
  • ada_exec: 执行 SQL 指令。
  • ada_fetchrow: 取得传回一列。
  • ada_fieldname: 取得栏位名称。
  • ada_fieldtype: 取得栏位资料形态。
  • ada_freeresult: 释出传回资料的记忆体。
  • ada_numfields: 取得栏位数目。
  • ada_numrows: 取得传回列数目。
  • ada_result: 取得传回资料。
  • ada_resultall: 传回 HTML 表格资料。
  • ada_rollback: 撤消当前交易。
  • AddSlashes: 字串加入斜线。
  • apache_lookup_uri: 获得所有的 URI 相关资讯。
  • apache_note: 获得及设定阿帕契伺服器的请求纪录。
  • array: 建立一个新的阵列。
  • array_walk: 让使用者自订函数能处理阵列中的每一个元素。
  • arsort: 将阵列的值由大到小排序。
  • Asin: 取得反正弦值。
  • asort: 将阵列的值由小到大排序。
  • aspell_check: 检查一个单字。
  • aspell_check-raw: 检查一个单字，即使拼错也不改变或修正。
  • aspell_new: 载入一个新的字典。
  • aspell_suggest: 检查一个单字，并提供拼字建议。
  • Atan: 取得反正切值。
  • Atan2: 计算二数的反正切值。
  • base64_decode: 将 BASE64 编码字串解码。
  • base64_encode: 将字串以 BASE64 编码。
  • basename: 传回不含路径的档案字串。
  • base_convert: 转换数字的进位方式。
  • bcadd: 将二个高精确度数字相加。
  • bccomp: 比较二个高精确度数字。
  • bcdiv: 将二个高精确度数字相除。
  • bcmod: 取得高精确度数字的余数。
  • bcmul: 将二个高精确度数字相乘。
  • bcpow: 求一高精确度数字次方值。
  • bcscale: 设定程式中所有 BC 函式库的内定小数点位数。
  • bcsqrt: 求一高精确度数字的平方根。
  • bcsub: 将二个高精确度数字相减。
  • bin2hex: 二进位转成十六进位。
  • BinDec: 二进位转成十进位。
  • Ceil: 计算大于指定数的最小整数。
  • chdir: 改变目录。
  • checkdate: 验证日期的正确性。
  • checkdnsrr: 检查指定网址的 DNS 记录。
  • chgrp: 改变档案所属的群组。
  • chmod: 改变档案的属性。
  • Chop: 去除连续空白。
  • chown: 改变档案的拥有者。
  • Chr: 传回序数值的字元。
  • chunk_split: 将字串分成小段。
  • clearstatcache: 清除档案状态快取。
  • closedir: 关闭目录 handle。
  • closelog: 关闭系统纪录。
  • connection_aborted: 若连结中断则传回 true。
  • connection_status: 取得连线状态。
  • connection_timeout: 若超过 PHP 程式执行时间则传回 true。
  • convert_cyr_string: 转换古斯拉夫字串成其它字串。
  • copy: 复制档案。
  • Cos: 余弦计算。
  • count: 计算变数或阵列中的元素个数。
  • crypt: 将字串用 DES 编码加密。
  • current: 传回阵列中目前的元素。
  • date: 将伺服器的时间格式化。
  • dbase_add_record: 加入资料到 dBase 资料表。
  • dbase_close: 关闭 dBase 资料表。
  • dbase_create: 建立 dBase 资料表。
  • dbase_delete_record: 删除 dBase 资料表的资料。
  • dbase_get_record: 取得 dBase 资料表的资料。
  • dbase_numfields: 取得 dBase 资料表的栏位数。
  • dbase_numrecords: 取得 dBase 资料表的列数。
  • dbase_open: 开启 dBase 资料表。
  • dbase_pack: 清理 dBase 资料表。
  • dba_close: 关闭资料库。
  • dba_delete: 删除指定资料。
  • dba_exists: 检查键是否存在。
  • dba_fetch: 取回指定资料。
  • dba_firstkey: 取回首笔键值。
  • dba_insert: 加入资料。
  • dba_nextkey: 取回下笔键值。
  • dba_open: 开启资料库连结。
  • dba_optimize: 最佳化资料库。
  • dba_popen: 开启并保持资料库连结。
  • dba_replace: 更动或加入资料。
  • dba_sync: 资料库同步化。
  • dblist: 取得 DBM 的资讯。
  • dbmclose: 关闭 DBM 资料库。
  • dbmdelete: 删除指定资料。
  • dbmexists: 检查键是否存在。
  • dbmfetch: 取回指定资料。
  • dbmfirstkey: 取回首笔键名。
  • dbminsert: 加入资料。
  • dbmnextkey: 取回下笔键值。
  • dbmopen: 开启 DBM 资料库连结。
  • dbmreplace: 更动或加入资料。
  • debugger_off: 关闭内建的 PHP 除错器。
  • debugger_on: 使用内建的 PHP 除错器。
  • DecBin: 十进位转二进位。
  • DecHex: 十进位转十六进位。
  • DecOct: 十进位转八进位。
  • delete: 无用的项目。
  • die: 输出讯息并中断 PHP 程式。
  • dir: 目录类别物件。
  • dirname: 取得路径中的目录名。
  • diskfreespace: 取得目录所在的剩余可用空间。
  • dl: 载入 PHP 扩充模组。
  • doubleval: 变数转成倍浮点数型态。
  • each: 传回阵列中下一个元素的索引及值。
  • easter_date: 计算复活节日期。
  • easter_days: 计算复活节与三月廿一日之间日期数。
  • echo: 输出字串。
  • empty: 判断变数是否已设定。
  • end: 将阵列的内部指标指到最后的元素。
  • ereg: 字串比对剖析。
  • eregi: 字串比对剖析，与大小写无关。
  • eregi_replace: 字串比对剖析并取代，与大小写无关。
  • ereg_replace: 字串比对剖析并取代。
  • error_log: 送出一个错误讯息。
  • error_reporting: 设定错误讯息回报的等级。
  • escapeshellcmd: 除去字串中的特殊符号。
  • eval: 将值代入字串之中。
  • exec: 执行外部程式。
  • exit: 结束 PHP 程式。
  • Exp: 自然对数 e 的次方值。
  • explode: 切开字串。
  • extract: 汇入阵列到符号表。
  • fclose: 关闭已开启的档案。
  • FDF_close: 关闭 FDF 文件。
  • FDF_create: 建立新的 FDF 文件。
  • FDF_get_file: 取得 /F 键的值。
  • FDF_get_status: 取得 /STATUS 键的值。
  • FDF_get_value: 取得栏位的值。
  • FDF_next_field_name: 下一栏位的名称。
  • FDF_open: 打开 FDF 文件。
  • FDF_save: 将 FDF 文件存档。
  • FDF_set_ap: 设定显示栏位。
  • FDF_set_file: 设定 /F 键。
  • FDF_set_status: 设定 /STATUS 键。
  • FDF_set_value: 设定栏位的值。
  • feof: 测试档案指标是否指到档尾。
  • fgetc: 取得档案指标所指的字元。
  • fgetcsv: 取得档案指标所指行，并剖析 CSV 栏位。
  • fgets: 取得档案指标所指的行。
  • fgetss: 取得档案指标所指的行，并去掉 HTML 语言标记。
  • file: 将档案全部读入阵列变数中。
  • fileatime: 取得档案最后的存取时间。
  • filectime: 取得档案最后的改变时间。
  • filegroup: 取得档案所属的群组。
  • fileinode: 取得档案的 inode 值。
  • filemtime: 取得档案最后的修改时间。
  • fileowner: 取得档案的拥有者。
  • fileperms: 取得档案的权限设定。
  • filepro: 读取 FilePro Map 档。
  • filepro_fieldcount: 取得栏位数目。
  • filepro_fieldname: 取得栏位名称。
  • filepro_fieldtype: 取得栏位型态。
  • filepro_fieldwidth: 取得栏位宽度。
  • filepro_retrieve: 取得指定储存格资料。
  • filepro_rowcount: 取得列数目。
  • filesize: 获得档案的大小。
  • filetype: 获得档案的型态。
  • file_exists: 检查档案是否存在。
  • flock: 锁住档案。
  • Floor: 计算小于指定数的最大整数。
  • flush: 清出输出缓冲区。
  • fopen: 开启档案或者 URL。
  • fpassthru: 输出所有剩余资料。
  • fputs: 写到档案指标。
  • fread: 位元组的方式读取档案。
  • FrenchToJD: 将法国共和历法转换成为凯撒日计数。
  • fseek: 移动档案指标。
  • fsockopen: 打开网路的 Socket 连结。
  • ftell: 取得档案读写指标位置。
  • ftp_cdup: 回上层目录。
  • ftp_chdir: 改变路径。
  • ftp_connect: 开启 FTP 连结。
  • ftp_delete: 将档案删除。
  • ftp_fget: 下载档案，并存在已开的档中。
  • ftp_fput: 上传已开启档案。
  • ftp_get: 下载档案。
  • ftp_login: 登入 FTP 伺服器。
  • ftp_mdtm: 获得指定档案的最后修改时间。
  • ftp_mkdir: 建新目录。
  • ftp_nlist: 列出指定目录中所有档案。
  • ftp_pasv: 切换主被动传输模式。
  • ftp_put: 上传档案。
  • ftp_pwd: 取得目前所在路径。
  • ftp_quit: 关闭 FTP 连线。
  • ftp_rawlist: 详细列出指定目录中所有档案。
  • ftp_rename: 将档案改名。
  • ftp_rmdir: 删除目录。
  • ftp_size: 获得指定档案的大小。
  • ftp_systype: 显示伺服器系统。
  • function_exists: 查核函式是否已定义。
  • fwrite: 二进位位元方式写入档案。
  • getallheaders: 获得所有 HTTP 变数值。
  • getdate: 获得时间及日期资讯。
  • getenv: 取得系统的环境变数
  • gethostbyaddr: 传回机器名称。
  • gethostbyname: 传回 IP 网址。
  • gethostbynamel: 传回机器名称的所有 IP。
  • GetImageSize: 取得图片的长宽。
  • getlastmod: 传回该网页的最后修改时间。
  • getmxrr: 取得指定网址 DNS 记录之 MX 栏位。
  • getmyinode: 传回该网页的 inode 值。
  • getmypid: 传回 PHP 的行程代号。
  • getmyuid: 传回 PHP 的使用者代码。
  • getrandmax: 乱数的最大值。
  • getrusage: 传回系统资源使用率。
  • gettimeofday: 取得目前时间。
  • gettype: 取得变数的型态。
  • get_cfg_var: 取得 PHP 的设定选项值。
  • get_current_user: 取得 PHP 行程的拥有者名称。
  • get_magic_quotes_gpc: 取得 PHP 环境变数 magic_quotes_gpc 的值。
  • get_magic_quotes_runtime: 取得 PHP 环境变数 magic_quotes_runtime 的值。
  • get_meta_tags: 抽出档案所有 meta 标记的资料。
  • gmdate: 取得目前与 GMT 差后的时间。
  • gmmktime: 取得 UNIX 时间戳记的格林威治时间。
  • GregorianToJD: 将格里高里历法转换成为凯撒日计数。
  • gzclose: 关闭压缩档。
  • gzeof: 判断是否在压缩档尾。
  • gzfile: 读压缩档到阵列中。
  • gzgetc: 读压缩档中的字元。
  • gzgets: 读压缩档中的字串。
  • gzgetss: 读压缩档中的字串，并去掉 HTML 指令。
  • gzopen: 开启压缩档。
  • gzpassthru: 解压缩指标后全部资料。
  • gzputs: 资料写入压缩档。
  • gzread: 压缩档读出指定长度字串。
  • gzrewind: 重设压缩档指标。
  • gzseek: 设压缩档指标至指定处。
  • gztell: 取得压缩档指标处。
  • gzwrite: 资料写入压缩档。
  • header: 送出 HTTP 协定的标头到浏览器
  • HexDec: 十六进位转十进位。
  • htmlentities: 将所有的字元都转成 HTML 字串。
  • htmlspecialchars: 将特殊字元转成 HTML 格式。
  • hw_Children: 取得子物件代码。
  • hw_ChildrenObj: 取得子物件的物件记录。
  • hw_Close: 关闭 Hyperwave 连线。
  • hw_Connect: 连上 Hyperwave 伺服器。
  • hw_Cp: 复制物件。
  • hw_Deleteobject: 删除物件。
  • hw_DocByAnchor: 取得指定锚的文件物件代码。
  • hw_DocByAnchorObj: 取得指定锚的文件物件。
  • hw_DocumentAttributes: 取得指定文件物件属性。
  • hw_DocumentBodyTag: 取得指定文件物件的文件主体标记。
  • hw_DocumentContent: 取得指定文件物件的内容。
  • hw_DocumentSetContent: 重设指定文件物件的内容。
  • hw_DocumentSize: 取得文件大小。
  • hw_EditText: 更动文字文件。
  • hw_Error: 取得错误代码。
  • hw_ErrorMsg: 取得错误讯息。
  • hw_Free_Document: 释放文件使用的记忆体。
  • hw_GetAnchors: 取得文件的连结锚。
  • hw_GetAnchorsObj: 取得文件的连结锚记录。
  • hw_GetAndLock: 取得并锁住物件。
  • hw_GetChildColl: 取得子物件们的 ID。
  • hw_GetChildCollObj: 取得子物件们的资料。
  • hw_GetChildDocColl: 取得全部子文件聚集。
  • hw_GetChildDocCollObj: 取得全部子文件聚集记录。
  • hw_GetObject: 取得物件。
  • hw_GetObjectByQuery: 搜寻物件。
  • hw_GetObjectByQueryColl: 搜寻聚集物件。
  • hw_GetObjectByQueryCollObj: 搜寻聚集物件。
  • hw_GetObjectByQueryObj: 搜寻物件。
  • hw_GetParents: 取得父物件的 ID。
  • hw_GetParentsObj: 取得父物件的资料。
  • hw_GetRemote: 取得远端文件。
  • hw_GetRemoteChildren: 取得远端的子文件。
  • hw_GetSrcByDestObj: 取得指定目的的文件内容。
  • hw_GetText: 取得纯文字文件。
  • hw_GetUsername: 目前使用者名字。
  • hw_Identify: 使用者身份确认。
  • hw_InCollections: 检查物件聚集。
  • hw_Info: 连线资讯。
  • hw_InsColl: 插入聚集。
  • hw_InsDoc: 插入文件。
  • hw_InsertDocument: 上传文件。
  • hw_InsertObject: 插入物件记录。
  • hw_Modifyobject: 修改物件记录。
  • hw_Mv: 移动物件。
  • hw_New_Document: 建立新文件。
  • hw_Objrec2Array: 物件记录转为阵列。
  • hw_OutputDocument: 输出文件。
  • hw_pConnect: 连上 Hyperwave 伺服器。
  • hw_PipeDocument: 取得文件。
  • hw_Root: 取得根物件代码。
  • hw_Unlock: 取消锁定。
  • hw_Who: 列出目前使用者。
  • ibase_bind: 连结 PHP 变数到 InterBase 参数。
  • ibase_close: 关闭 InterBase 伺服器连线。
  • ibase_connect: 开启 InterBase 伺服器连线。
  • ibase_execute: 执行 SQL 的指令区段。
  • ibase_fetch_row: 传回单列的各栏位。
  • ibase_free_query: 释放查询指令占用记忆体。
  • ibase_free_result: 释放传回占用记忆体。
  • ibase_pconnect: 保持 InterBase 伺服器连线。
  • ibase_prepare: 分析 SQL 语法。
  • ibase_query: 送出一个 query 字串。
  • ibase_timefmt: 设定时间格式。
  • ifxus_close_slob: 删除 slob 物件。
  • ifxus_create_slob: 建立 slob 物件。
  • ifxus_open_slob: 开启 slob 物件。
  • ifxus_read_slob: 读取指定数目的 slob 物件。
  • ifxus_seek_slob: 设定目前档案或找寻位置。
  • ifxus_tell_slob: 传回目前档案或找寻位置。
  • ifxus_write_slob: 将字串写入 slob 物件中。
  • ifx_affected_rows: 得到 Informix 最后操作影响的列数目。
  • ifx_blobinfile_mode: 设定长位元物件模式。
  • ifx_byteasvarchar: 设定位元组模式内定值。
  • ifx_close: 关闭 Informix 伺服器连线。
  • ifx_connect: 开启 Informix 伺服器连线。
  • ifx_copy_blob: 复制长位元物件。
  • ifx_create_blob: 建立长位元物件。
  • ifx_create_char: 建立字元物件。
  • ifx_do: 执行已准备 query 字串。
  • ifx_error: 取得 Informix 最后的错误。
  • ifx_errormsg: 取得 Informix 最后错误讯息。
  • ifx_fetch_row: 传回单列的各栏位。
  • ifx_fieldproperties: 列出 Informix 的 SQL 栏位属性。
  • ifx_fieldtypes: 列出 Informix 的 SQL 栏位。
  • ifx_free_blob: 删除长位元物件。
  • ifx_free_char: 删除字元物件。
  • ifx_free_result: 释放传回占用记忆体。
  • ifx_free_slob: 删除 slob 物件。
  • ifx_getsqlca: 取得 query 后的 sqlca 资讯。
  • ifx_get_blob: 取得长位元物件。
  • ifx_get_char: 取得字元物件。
  • ifx_htmltbl_result: 将 query 传回资料转成 HTML 表格。
  • ifx_nullformat: 设定空字元模式内定值。
  • ifx_num_fields: 取得传回栏位的数目。
  • ifx_num_rows: 取得传回列的数目。
  • ifx_pconnect: 开启 Informix 伺服器长期连线。
  • ifx_prepare: 准备 query 字串。
  • ifx_query: 送出一个 query 字串。
  • ifx_textasvarchar: 设定文字模式内定值。
  • ifx_update_blob: 更改长位元物件。
  • ifx_update_char: 更改字元物件。
  • ignore_user_abort: 连线中断后程式是否执行。
  • ImageArc: 画弧线。
  • ImageChar: 写出横向字元。
  • ImageCharUp: 写出直式字元。
  • ImageColorAllocate: 匹配颜色。
  • ImageColorAt: 取得图中指定点颜色的索引值。
  • ImageColorClosest: 计算色表中与指定颜色最接近者。
  • ImageColorExact: 计算色表上指定颜色索引值。
  • ImageColorResolve: 计算色表上指定或最接近颜色的索引值。
  • ImageColorSet: 设定色表上指定索引的颜色。
  • ImageColorsForIndex: 取得色表上指定索引的颜色。
  • ImageColorsTotal: 计算图的颜色数。
  • ImageColorTransparent: 指定透明背景色。
  • ImageCopyResized: 复制新图并调整大小。
  • ImageCreate: 建立新图。
  • ImageCreateFromGIF: 取出 GIF 图型。
  • ImageCreateFromPNG: 取出 PNG 图型。
  • ImageDashedLine: 绘虚线。
  • ImageDestroy: 结束图形。
  • ImageFill: 图形着色。
  • ImageFilledPolygon: 多边形区域着色。
  • ImageFilledRectangle: 矩形区域着色。
  • ImageFillToBorder: 指定颜色区域内着色。
  • ImageFontHeight: 取得字型的高度。
  • ImageFontWidth: 取得字型的宽度。
  • ImageGIF: 建立 GIF 图型。
  • ImageInterlace: 使用交错式显示与否。
  • ImageLine: 绘实线。
  • ImageLoadFont: 载入点阵字型。
  • ImagePNG: 建立 PNG 图型。
  • ImagePolygon: 绘多边形。
  • ImagePSBBox: 计算 PostScript 文字所占区域。
  • ImagePSEncodeFont: PostScript 字型转成向量字。
  • ImagePSFreeFont: 卸下 PostScript 字型。
  • ImagePSLoadFont: 载入 PostScript 字型。
  • ImagePSText: 写 PostScript 文字到图中。
  • ImageRectangle: 绘矩形。
  • ImageSetPixel: 绘点。
  • ImageString: 绘横式字串。
  • ImageStringUp: 绘直式字串。
  • ImageSX: 取得图片的宽度。
  • ImageSY: 取得图片的高度。
  • ImageTTFBBox: 计算 TTF 文字所占区域。
  • ImageTTFText: 写 TTF 文字到图中。
  • imap_8bit: 将八位元转成 qp 编码。
  • imap_alerts: 所有的警告讯息。
  • imap_append: 附加字串到指定的邮箱中。
  • imap_base64: 解 BASE64 编码。
  • imap_binary: 将八位元转成 base64 编码。
  • imap_body: 读信的内文。
  • imap_check: 传回邮箱资讯。
  • imap_clearflag_full: 清除信件旗标。
  • imap_close: 关闭 IMAP 连结。
  • imap_createmailbox: 建立新的信箱。
  • imap_delete: 标记欲删除邮件。
  • imap_deletemailbox: 删除既有信箱。
  • imap_errors: 所有的错误讯息。
  • imap_expunge: 删除已标记的邮件。
  • imap_fetchbody: 从信件内文取出指定区段。
  • imap_fetchheader: 取得原始标头。
  • imap_fetchstructure: 获取某信件的结构资讯。
  • imap_getmailboxes: 取得全部信件详细资讯。
  • imap_getsubscribed: 列出所有订阅邮箱。
  • imap_header: 获取某信件的标头资讯。
  • imap_headers: 获取全部信件的标头资讯。
  • imap_last_error: 最后的错误讯息。
  • imap_listmailbox: 获取邮箱列示。
  • imap_listsubscribed: 获取订阅邮箱列示。
  • imap_mailboxmsginfo: 取得目前邮箱的资讯。
  • imap_mail_copy: 复制指定信件到它处邮箱。
  • imap_mail_move: 移动指定信件到它处邮箱。
  • imap_msgno: 列出 UID 的连续信件。
  • imap_num_msg: 取得信件数。
  • imap_num_recent: 取得新进信件数。
  • imap_open: 开启 IMAP 连结。
  • imap_ping: 检查 IMAP 是否连线。
  • imap_qprint: 将 qp 编码转成八位元。
  • imap_renamemailbox: 更改邮箱名字。
  • imap_reopen: 重开 IMAP 连结。
  • imap_rfc822_parse_adrlist: 剖析电子邮件位址。
  • imap_rfc822_write_address: 电子邮件位址标准化。
  • imap_scanmailbox: 寻找信件有无特定字串。
  • imap_search: 搜寻指定标准的信件。
  • imap_setflag_full: 设定信件旗标。
  • imap_sort: 将信件标头排序。
  • imap_status: 目前的状态资讯。
  • imap_subscribe: 订阅邮箱。
  • imap_uid: 取得信件 UID。
  • imap_undelete: 取消删除邮件标记。
  • imap_unsubscribe: 取消订阅邮箱。
  • implode: 将阵列变成字串。
  • intval: 变数转成整数型态。
  • iptcparse: 使用 IPTC 模组解析位元资料。
  • isset: 判断变数是否已设定。
  • is_array: 判断变数型态是否为阵列型态。
  • is_dir: 测试档案是否为目录。
  • is_double: 判断变数型态是否为倍浮点数型态。
  • is_executable: 测试档案是否为可执行档。
  • is_file: 测试档案是否为正常档案。
  • is_float: 判断变数型态是否为浮点数型态。
  • is_int: 判断变数型态是否为整数型态。
  • is_integer: 判断变数型态是否为长整数型态。
  • is_link: 测试档案是否为连结档。
  • is_long: 判断变数型态是否为长整数型态。
  • is_object: 判断变数型态是否为物件型态。
  • is_readable: 测试档案是否可读取。
  • is_real: 判断变数型态是否为实数型态。
  • is_string: 判断变数型态是否为字串型态。
  • is_writeable: 测试档案是否可写入。
  • JDDayOfWeek: 传回日期在周几。
  • JDMonthName: 传回月份名。
  • JDToFrench: 将凯撒日计数转换成为法国共和历法。
  • JDToGregorian: 将凯撒日计数 (Julian Day Count) 转换成为格里高里历法 (Gregorian date)。
  • JDToJewish: 将凯撒日计数转换成为犹太历法。
  • JDToJulian: 将凯撒日计数转换成为凯撒历法。
  • JewishToJD: 将犹太历法转换成为凯撒日计数。
  • join: 将阵列变成字串。
  • JulianToJD: 将凯撒历法转换成为凯撒日计数。
  • key: 取得阵列中的索引资料。
  • ksort: 将阵列的元素依索引排序。
  • ldap_add: 增加 LDAP 名录的条目。
  • ldap_bind: 系住 LDAP 目录。
  • ldap_close: 结束 LDAP 连结。
  • ldap_connect: 连上 LDAP 伺服器。
  • ldap_count_entries: 搜寻结果的数目。
  • ldap_delete: 删除指定资源。
  • ldap_dn2ufn: 将 dn 转成易读的名字。
  • ldap_explode_dn: 切开 dn 的栏位。
  • ldap_first_attribute: 取得第一笔资源的属性。
  • ldap_first_entry: 取得第一笔结果代号。
  • ldap_free_result: 释放传回资料记忆体。
  • ldap_get_attributes: 取得传回资料的属性。
  • ldap_get_dn: 取得 DN 值。
  • ldap_get_entries: 取得全部传回资料。
  • ldap_get_values: 取得全部传回值。
  • ldap_list: 列出简表。
  • ldap_modify: 改变 LDAP 名录的属性。
  • ldap_mod_add: 增加 LDAP 名录的属性。
  • ldap_mod_del: 删除 LDAP 名录的属性。
  • ldap_mod_replace: 新的 LDAP 名录取代旧属性。
  • ldap_next_attribute: 取得传回资料的下笔属性。
  • ldap_next_entry: 取得下一笔结果代号。
  • ldap_read: 取得目前的资料属性。
  • ldap_search: 列出树状简表。
  • ldap_unbind: 结束 LDAP 连结。
  • leak: 泄出记忆体。
  • link: 建立硬式连结。
  • linkinfo: 取得连结资讯。
  • list: 列出阵列中元素的值。
  • Log: 自然对数值。
  • Log10: 10 基底的对数值。
  • lstat: 取得连结档相关资讯。
  • ltrim: 去除连续空白。
  • mail: 寄出电子邮件。
  • max: 取得最大值。
  • mcrypt_cbc: 使用 CBC 将资料加/解密。
  • mcrypt_cfb: 使用 CFB 将资料加/解密。
  • mcrypt_create_iv: 从随机源将向量初始化。
  • mcrypt_ecb: 使用 ECB 将资料加/解密。
  • mcrypt_get_block_size: 取得编码方式的区块大小。
  • mcrypt_get_cipher_name: 取得编码方式的名称。
  • mcrypt_get_key_size: 取得编码钥匙大小。
  • mcrypt_ofb: 使用 OFB 将资料加/解密。
  • md5: 计算字串的 MD5 杂凑。
  • mhash: 计算杂凑值。
  • mhash_count: 取得杂凑 ID 的最大值。
  • mhash_get_block_size: 取得杂凑方式的区块大小。
  • mhash_get_hash_name: 取得杂凑演算法名称。
  • microtime: 取得目前时间的 UNIX 时间戳记的百万分之一秒值。
  • min: 取得最小值。
  • mkdir: 建立目录。
  • mktime: 取得 UNIX 时间戳记。
  • msql: 送出 query 字串。
  • msql_affected_rows: 得到 mSQL 最后操作影响的列数目。
  • msql_close: 关闭 mSQL 资料库连线。
  • msql_connect: 开启 mSQL 资料库连线。
  • msql_createdb: 建立一个新的 mSQL 资料库。
  • msql_create_db: 建立一个新的 mSQL 资料库。
  • msql_data_seek: 移动内部传回指标。
  • msql_dbname: 取得目前所在资料库名称。
  • msql_dropdb: 删除指定的 mSQL 资料库。
  • msql_drop_db: 删除指定的 mSQL 资料库。
  • msql_error: 取得最后错误讯息。
  • msql_fetch_array: 传回阵列资料。
  • msql_fetch_field: 取得栏位资讯。
  • msql_fetch_object: 传回物件资料。
  • msql_fetch_row: 传回单列的各栏位。
  • msql_fieldflags: 获得栏位的旗标。
  • msql_fieldlen: 获得栏位的长度。
  • msql_fieldname: 传回指定栏位的名称。
  • msql_fieldtable: 获得栏位的资料表 (table) 名称。
  • msql_fieldtype: 获得栏位的型态。
  • msql_field_seek: 设定指标到传回值的某栏位。
  • msql_freeresult: 释放传回占用记忆体。
  • msql_free_result: 释放传回占用记忆体。
  • msql_listdbs: 列出可用资料库 (database)。
  • msql_listfields: 列出指定资料表的栏位 (field)。
  • msql_listtables: 列出指定资料库的资料表 (table)。
  • msql_list_dbs: 列出可用资料库 (database)。
  • msql_list_fields: 列出指定资料表的栏位 (field)。
  • msql_list_tables: 列出指定资料库的资料表 (table)。
  • msql_numfields: 取得传回栏位的数目。
  • msql_numrows: 取得传回列的数目。
  • msql_num_fields: 取得传回栏位的数目。
  • msql_num_rows: 取得传回列的数目。
  • msql_pconnect: 开启 mSQL 伺服器长期连线。
  • msql_query: 送出一个 query 字串。
  • msql_regcase: 将字串逐字传回大小写字元。
  • msql_result: 取得查询 (query) 的结果。
  • msql_selectdb: 选择一个资料库。
  • msql_select_db: 选择一个资料库。
  • msql_tablename: 传回指定资料表的名称。
  • mssql_affected_rows: 取得最后 query 影响的列数。
  • mssql_close: 关闭与资料库的连线。
  • mssql_connect: 连上资料库。
  • mssql_data_seek: 移动列指标。
  • mssql_fetch_array: 传回阵列资料。
  • mssql_fetch_field: 取得栏位资讯。
  • mssql_fetch_object: 传回物件资料。
  • mssql_fetch_row: 传回单列的各栏位。
  • mssql_field_seek: 设定指标到传回值的某栏位。
  • mssql_free_result: 释放传回占用记忆体。
  • mssql_num_fields: 取得传回栏位的数目。
  • mssql_num_rows: 取得传回列的数目。
  • mssql_pconnect: 开启 MS SQL 伺服器长期连线。
  • mssql_query: 送出一个 query 字串。
  • mssql_result: 取得查询 (query) 的结果。
  • mssql_select_db: 选择一个资料库。
  • mt_getrandmax: 乱数的最大值。
  • mt_rand: 取得乱数值。
  • mt_srand: 设定乱数种子。
  • mysql_affected_rows: 得到 MySQL 最后操作影响的列数目。
  • mysql_close: 关闭 MySQL 伺服器连线。
  • mysql_connect: 开启 MySQL 伺服器连线。
  • mysql_create_db: 建立一个 MySQL 新资料库。
  • mysql_data_seek: 移动内部传回指标。
  • mysql_db_query: 送查询字串 (query) 到 MySQL 资料库。
  • mysql_drop_db: 移除资料库。
  • mysql_errno: 传回错误讯息代码。
  • mysql_error: 传回错误讯息。
  • mysql_fetch_array: 传回阵列资料。
  • mysql_fetch_field: 取得栏位资讯。
  • mysql_fetch_lengths: 传回单列各栏资料最大长度。
  • mysql_fetch_object: 传回物件资料。
  • mysql_fetch_row: 传回单列的各栏位。
  • mysql_field_flags: 获得目前栏位的旗标。
  • mysql_field_len: 获得目前栏位的长度。
  • mysql_field_name: 传回指定栏位的名称。
  • mysql_field_seek: 设定指标到传回值的某栏位。
  • mysql_field_table: 获得目前栏位的资料表 (table) 名称。
  • mysql_field_type: 获得目前栏位的型态。
  • mysql_free_result: 释放传回占用记忆体。
  • mysql_insert_id: 传回最后一次使用 INSERT 指令的 ID。
  • mysql_list_dbs: 列出 MySQL 伺服器可用的资料库 (database)。
  • mysql_list_fields: 列出指定资料表的栏位 (field)。
  • mysql_list_tables: 列出指定资料库的资料表 (table)。
  • mysql_num_fields: 取得传回栏位的数目。
  • mysql_num_rows: 取得传回列的数目。
  • mysql_pconnect: 开启 MySQL 伺服器长期连线。
  • mysql_query: 送出一个 query 字串。
  • mysql_result: 取得查询 (query) 的结果。
  • mysql_select_db: 选择一个资料库。
  • mysql_tablename: 取得资料表名称。
  • next: 将阵列的内部指标向后移动。
  • nl2br: 将换行字元转成 <br>。
  • number_format: 格式化数字字串。
  • OCIBindByName: 让动态 SQL 可使用 PHP 变数。
  • OCIColumnIsNULL: 测试传回行是否为空的。
  • OCIColumnSize: 取得栏位型态的大小。
  • OCICommit: 将 Oracle 的交易处理付诸实行。
  • OCIDefineByName: 让 SELECT 指令可使用 PHP 变数。
  • OCIExecute: 执行 Oracle 的指令区段。
  • OCIFetch: 取得传回资料的一列 (row)。
  • OCIFetchInto: 取回 Oracle 资料放入阵列。
  • OCILogOff: 关闭与 Oracle 的连结。
  • OCILogon: 开启与 Oracle 的连结。
  • OCINewDescriptor: 初始新的 LOB/FILE 描述。
  • OCINumRows: 取得受影响栏位的数目。
  • OCIParse: 分析 SQL 语法。
  • OCIResult: 从目前列 (row) 的资料取得一栏 (column)。
  • OCIRollback: 撤消当前交易。
  • OctDec: 八进位转十进位。
  • odbc_autocommit: 开关自动更动功能。
  • odbc_binmode: 设定二进位资料处理方式。
  • odbc_close: 关闭 ODBC 连结。
  • odbc_close_all: 关闭所有 ODBC 连结。
  • odbc_commit: 更动 ODBC 资料库。
  • odbc_connect: 连结至 ODBC 资料库。
  • odbc_cursor: 取得游标名。
  • odbc_do: 执行 SQL 指令。
  • odbc_exec: 执行 SQL 指令。
  • odbc_execute: 执行预置 SQL 指令。
  • odbc_fetch_into: 取得传回的指定列。
  • odbc_fetch_row: 取得传回一列。
  • odbc_field_len: 取得栏位资料长度。
  • odbc_field_name: 取得栏位名称。
  • odbc_field_type: 取得栏位资料形态。
  • odbc_free_result: 释出传回资料的记忆体。
  • odbc_longreadlen: 设定传回栏的最大值。
  • odbc_num_fields: 取得栏位数目。
  • odbc_num_rows: 取得传回列数目。
  • odbc_pconnect: 长期连结至 ODBC 资料库。
  • odbc_prepare: 预置 SQL 指令。
  • odbc_result: 取得传回资料。
  • odbc_result_all: 传回 HTML 表格资料。
  • odbc_rollback: 撤消当前交易。
  • odbc_setoption: 调整 ODBC 设定。
  • opendir: 开启目录 handle。
  • openlog: 打开系统纪录。
  • Ora_Bind: 连结 PHP 变数到 Oracle 参数。
  • Ora_Close: 关闭一个 Oracle 的 cursor。
  • Ora_ColumnName: 得到 Oracle 传回列 (Column) 的名称。
  • Ora_ColumnSize: 取得栏位型态的大小。
  • Ora_ColumnType: 得到 Oracle 传回列 (Column) 的型态。
  • Ora_Commit: 将 Oracle 的交易处理付诸实行。
  • Ora_CommitOff: 关闭自动执行 Oracle 交易更动的功能。
  • Ora_CommitOn: 打开自动执行 Oracle 交易更动的功能。
  • Ora_Do: 快速的 SQL 查询。
  • Ora_Error: 获得 Oracle 错误讯息。
  • Ora_ErrorCode: 获得 Oracle 错误代码。
  • Ora_Exec: 执行 Oracle 的指令区段。
  • Ora_Fetch: 取得传回资料的一列 (row)。
  • Ora_FetchInto: 取回 Oracle 资料放入阵列。
  • Ora_GetColumn: 从传回列 (row) 的资料取得一栏 (column)。
  • Ora_Logoff: 结束与 Oracle 的连结。
  • Ora_Logon: 开启与 Oracle 的连结。
  • Ora_Numcols: 取得栏位的数目。
  • Ora_Open: 开启 Oracle 的 cursor。
  • Ora_Parse: 分析 SQL 语法。
  • Ora_PLogon: 开启与 Oracle 的长期连结。
  • Ora_Rollback: 撤消当前交易。
  • Ord: 传回字元的序数值。
  • pack: 压缩资料到位元字串之中。
  • parse_str: 剖析 query 字串成变数。
  • parse_url: 剖析 URL 字串。
  • passthru: 执行外部程式并不加处理输出资料。
  • pclose: 关闭档案。
  • PDF_add_annotation: 加入注解。
  • PDF_add_outline: 目前页面加入书签。
  • PDF_arc: 绘弧。
  • PDF_begin_page: 启始 PDF 档案页面。
  • PDF_circle: 绘圆。
  • PDF_clip: 组合所有向量。
  • PDF_close: 关闭 PDF 档。
  • PDF_closepath: 形成封闭的向量形状。
  • PDF_closepath_fill_stroke: 形成封闭的向量形状沿向量绘线并填满。
  • PDF_closepath_stroke: 形成封闭的向量形状并沿向量绘线。
  • PDF_close_image: 关闭图档。
  • PDF_continue_text: 输出文字。
  • PDF_curveto: 绘贝氏曲线。
  • PDF_endpath: 关闭目前向量。
  • PDF_end_page: 关闭 PDF 档案页面。
  • PDF_execute_image: 放置 PDF 档中图片到指定位置。
  • PDF_fill: 填满目前的向量。
  • PDF_fill_stroke: 填满目前的向量并沿向量绘线。
  • PDF_get_info: 传回档案资讯。
  • PDF_lineto: 绘直线。
  • PDF_moveto: 设定处理的坐标点。
  • PDF_open: 建立新的 PDF 档。
  • PDF_open_gif: 开启 GIF 图档。
  • PDF_open_jpeg: 开启 JPEG 图档。
  • PDF_open_memory_image: 开启记忆体图档。
  • PDF_place_image: 放置图片到 PDF 档指定位置。
  • PDF_put_image: 放置图片到 PDF 档。
  • PDF_rect: 绘长方形。
  • PDF_restore: 还原环境变数。
  • PDF_rotate: 旋转物件。
  • PDF_save: 储存环境变数。
  • PDF_scale: 缩放物件。
  • PDF_setdash: 设定虚线样式。
  • PDF_setflat: 设定平滑值。
  • PDF_setgray: 指定绘图的颜色为灰阶并填入。
  • PDF_setgray_fill: 指定填入的颜色为灰阶。
  • PDF_setgray_stroke: 指定绘图的颜色为灰阶。
  • PDF_setlinecap: 设定 linecap 参数。
  • PDF_setlinejoin: 设定连线参数。
  • PDF_setlinewidth: 设定线宽。
  • PDF_setmiterlimit: 设定斜边界限。
  • PDF_setrgbcolor: 指定绘图的颜色为彩色并填入。
  • PDF_setrgbcolor_fill: 指定填入的颜色为彩色。
  • PDF_setrgbcolor_stroke: 指定绘图的颜色为彩色。
  • PDF_set_char_spacing: 设定字元间距。
  • PDF_set_duration: 设定二页的切换时间。
  • PDF_set_font: 设定使用的字型及大小。
  • PDF_set_horiz_scaling: 设定文字水平间距。
  • PDF_set_info_author: 设定档案作者。
  • PDF_set_info_creator: 设定建档者字串。
  • PDF_set_info_keywords: 设定档案的关键字。
  • PDF_set_info_subject: 设定档案主题。
  • PDF_set_info_title: 设定档案标题。
  • PDF_set_leading: 设定行距。
  • PDF_set_text_matrix: 设定文字矩阵。
  • PDF_set_text_pos: 设定文字位置。
  • PDF_set_text_rendering: 设定文字表现方式。
  • PDF_set_text_rise: 设定文字高度。
  • PDF_set_transition: 设定页的转换。
  • PDF_set_word_spacing: 设定字间距。
  • PDF_show: 输出字串到 PDF 档案。
  • PDF_show_xy: 输出字串到指定坐标。
  • PDF_stringwidth: 计算字串的宽度。
  • PDF_stroke: 沿向量绘线。
  • PDF_translate: 移动原点。
  • pfsockopen: 打开网路的 Socket 持续连结。
  • pg_Close: 关闭 PostgreSQL 伺服器连线。
  • pg_cmdTuples: 取得被 SQL 指令影响的资料笔数。
  • pg_Connect: 开启 PostgreSQL 伺服器连线。
  • pg_DBname: 取得目前的资料库名称。
  • pg_ErrorMessage: 传回错误讯息。
  • pg_Exec: 执行 query 指令。
  • pg_Fetch_Array: 传回阵列资料。
  • pg_Fetch_Object: 传回物件资料。
  • pg_Fetch_Row: 传回单列的各栏位。
  • pg_FieldIsNull: 检查栏位是否有资料。
  • pg_FieldName: 传回指定栏位的名称。
  • pg_FieldNum: 取得指定栏位的行数。
  • pg_FieldPrtLen: 计算可列示的长度。
  • pg_FieldSize: 计算指定栏位的长度。
  • pg_FieldType: 获得目前栏位的型态。
  • pg_FreeResult: 释放传回占用记忆体。
  • pg_GetLastOid: 取得最后的物件代码。
  • pg_Host: 取得连线机器名称。
  • pg_loclose: 关闭大型物件。
  • pg_locreate: 建立大型物件。
  • pg_loopen: 开启大型物件。
  • pg_loread: 读取大型物件。
  • pg_loreadall: 读取大型物件并输出。
  • pg_lounlink: 删除大型物件。
  • pg_lowrite: 读取大型物件。
  • pg_NumFields: 取得传回栏位的数目。
  • pg_NumRows: 取得传回列的数目。
  • pg_Options: 取得连线机器选项。
  • pg_pConnect: 开启 PostgreSQL 伺服器长期连线。
  • pg_Port: 取得连线机器埠号。
  • pg_Result: 取得查询 (query) 的结果。
  • pg_tty: 取得连线机器终端机。
  • phpinfo: 传回 PHP 所有相关资讯。
  • phpversion: 传回 PHP 版本讯息。
  • pi: 圆周率。
  • popen: 开启档案。
  • pos: 传回阵列目前的元素。
  • pow: 次方。
  • preg_match: 字串比对剖析。
  • preg_match_all: 字串整体比对剖析。
  • preg_replace: 字串比对剖析并取代。
  • preg_split: 将字串依指定的规则切开。
  • prev: 将阵列的内部指标往前移动。
  • print: 输出字串。
  • printf: 输出格式化字串。
  • putenv: 设定系统环境变数。
  • quoted_printable_decode: 将 qp 编码字串转成 8 位元字串。
  • QuoteMeta: 加入引用符号。
  • rand: 取得乱数值。
  • range: 建立一个整数范围的阵列。
  • rawurldecode: 从 URL 专用格式字串还原成普通字串。
  • rawurlencode: 将字串编码成 URL 专用格式。
  • readdir: 读取目录 handle。
  • readfile: 输出档案。
  • readgzfile: 读出压缩档。
  • readlink: 传回符号连结 (symbolic link) 目标档。
  • recode_file: 记录档案或档案请求到记录中。
  • recode_string: 记录字串到记录中。
  • register_shutdown_function: 定义 PHP 程式执行完成后执行的函式。
  • rename: 更改档名。
  • reset: 将阵列的指标指到阵列第一个元素。
  • rewind: 重置开档的读写位置指标。
  • rewinddir: 重设目录 handle。
  • rmdir: 删除目录。
  • round: 四舍五入。
  • rsort: 将阵列的值由大到小排序。
  • sem_acquire: 捕获信号。
  • sem_get: 取得信号代码。
  • sem_release: 释出信号。
  • serialize: 储存资料到系统中。
  • session_decode: Session 资料解码。
  • session_destroy: 结束 session。
  • session_encode: Session 资料编码。
  • session_id: 存取目前 session 代号。
  • session_is_registered: 检查变数是否注册。
  • session_module_name: 存取目前 session 模组。
  • session_name: 存取目前 session 名称。
  • session_register: 注册新的变数。
  • session_save_path: 存取目前 session 路径。
  • session_start: 初始 session。
  • session_unregister: 删除已注册变数。
  • setcookie: 送出 Cookie 资讯到浏览器。
  • setlocale: 设定地域化资讯。
  • settype: 设定变数型态。
  • set_file_buffer: 设定档案缓冲区大小。
  • set_magic_quotes_runtime: 设定 magic_quotes_runtime 值。
  • set_socket_blocking: 切换搁置与无搁置模式。
  • set_time_limit: 设定该页最久执行时间。
  • shm_attach: 开启建立共享记忆体区段。
  • shm_detach: 中止共享记忆体区段连结。
  • shm_get_var: 取得记忆体区段中指定的变数。
  • shm_put_var: 加入或更新记忆体区段中的变数。
  • shm_remove: 清除记忆体区段。
  • shm_remove_var: 删除记忆体区段中指定的变数。
  • shuffle: 将阵列的顺序弄混。
  • similar_text: 计算字串相似度。
  • Sin: 正弦计算。
  • sizeof: 获知阵列的大小。
  • sleep: 暂停执行。
  • snmpget: 取得指定物件识别码。
  • snmpwalk: 取得所有物件。
  • snmpwalkoid: 取得网路本体树状资讯。
  • snmp_get_quick_print: 取得 UCD 函式库中的 quick_print 值。
  • snmp_set_quick_print: 设定 UCD 函式库中的 quick_print 值。
  • solid_close: 关闭 solid 连结。
  • solid_connect: 连结至 solid 资料库。
  • solid_exec: 执行 SQL 指令。
  • solid_fetchrow: 取得传回一列。
  • solid_fieldname: 取得栏位名称。
  • solid_fieldnum: 取得栏位数目。
  • solid_freeresult: 释出传回资料的记忆体。
  • solid_numfields: 取得栏位数目。
  • solid_numrows: 取得传回列数目。
  • solid_result: 取得传回资料。
  • sort: 将阵列排序。
  • soundex: 计算字串的读音值
  • split: 将字串依指定的规则切开。
  • sprintf: 将字串格式化。
  • sql_regcase: 将字串逐字传回大小写字元。
  • Sqrt: 开平方根。
  • srand: 设定乱数种子。
  • stat: 取得档案相关资讯。
  • strchr: 寻找第一个出现的字元。
  • strcmp: 字串比较。
  • strcspn: 不同字串的长度。
  • strftime: 将伺服器的时间本地格式化。
  • StripSlashes: 去掉反斜线字元。
  • strip_tags: 去掉 HTML 及 PHP 的标记。
  • strlen: 取得字串长度。
  • strpos: 寻找字串中某字元最先出现处。
  • strrchr: 取得某字元最后出现处起的字串。
  • strrev: 颠倒字串。
  • strrpos: 寻找字串中某字元最后出现处。
  • strspn: 找出某字串落在另一字串遮罩的数目。
  • strstr: 传回字串中某字串开始处至结束的字串。
  • strtok: 切开字串。
  • strtolower: 字串全转为小写。
  • strtoupper: 字串全转为大写。
  • strtr: 转换某些字元。
  • strval: 将变数转成字串型态。
  • str_replace: 字串取代。
  • substr: 取部份字串。
  • sybase_affected_rows: 取得最后 query 影响的列数。
  • sybase_close: 关闭与资料库的连线。
  • sybase_connect: 连上资料库。
  • sybase_data_seek: 移动列指标。
  • sybase_fetch_array: 传回阵列资料。
  • sybase_fetch_field: 取得栏位资讯。
  • sybase_fetch_object: 传回物件资料。
  • sybase_fetch_row: 传回单列的各栏位。
  • sybase_field_seek: 设定指标到传回值的某栏位。
  • sybase_free_result: 释放传回占用记忆体。
  • sybase_num_fields: 取得传回栏位的数目。
  • sybase_num_rows: 取得传回列的数目。
  • sybase_pconnect: 开启伺服器长期连线。
  • sybase_query: 送出一个 query 字串。
  • sybase_result: 取得查询 (query) 的结果。
  • sybase_select_db: 选择一个资料库。
  • symlink: 建立符号连结 (symbolic link)。
  • syslog: 纪录至系统纪录。
  • system: 执行外部程式并显示输出资料。
  • Tan: 正切计算。
  • tempnam: 建立唯一的临时档。
  • time: 取得目前时间的 UNIX 时间戳记。
  • touch: 设定最后修改时间。
  • trim: 截去字串首尾的空格。
  • uasort: 将阵列依使用者自定的函式排序。
  • ucfirst: 将字串第一个字元改大写。
  • ucwords: 将字串每个字第一个字母改大写。
  • uksort: 将阵列的索引依使用者自定的函式排序。
  • umask: 改变目前的档案属性遮罩 umask。
  • uniqid: 产生唯一的值。
  • unlink: 删除档案。
  • unpack: 解压缩位元字串资料。
  • unserialize: 取出系统资料。
  • unset: 删除变数。
  • urldecode: 还原 URL 编码字串。
  • urlencode: 将字串以 URL 编码。
  • usleep: 暂停执行。
  • usort: 将阵列的值依使用者自定的函式排序。
  • utf8_decode: 将 UTF-8 码转成 ISO-8859-1 码。
  • utf8_encode: 将 ISO-8859-1 码转成 UTF-8 码。
  • virtual: 完成阿帕契伺服器的子请求 (sub-request)。
  • vm_addalias: 加入新别名。
  • vm_adduser: 加入新使用者。
  • vm_delalias: 删除别名。
  • vm_deluser: 删除使用者。
  • vm_passwd: 改变使用者密码。
  • wddx_add_vars: 将 WDDX 封包连续化。
  • wddx_deserialize: 将 WDDX 封包解连续化。
  • wddx_packet_end: 结束的 WDDX 封包。
  • wddx_packet_start: 开始新的 WDDX 封包。
  • wddx_serialize_value: 将单一值连续化。
  • wddx_serialize_vars: 将多值连续化。
  • xml_error_string: 取得 XML 错误字串。
  • xml_get_current_byte_index: 取得目前剖析为第几个位元组。
  • xml_get_current_column_number: 获知目前剖析的第几栏位。
  • xml_get_current_line_number: 取得目前剖析的行号。
  • xml_get_error_code: 取得 XML 错误码。
  • xml_parse: 剖析 XML 文件。
  • xml_parser_create: 初始 XML 剖析器。
  • xml_parser_free: 释放剖析占用的记忆体。
  • xml_parser_get_option: 取得剖析使用的选项。
  • xml_parser_set_option: 设定剖析使用的选项。
  • xml_set_character_data_handler: 建立字元资料标头。
  • xml_set_default_handler: 建立内定标头。
  • xml_set_element_handler: 设定元素的标头。
  • xml_set_external_entity_ref_handler: 设定外部实体参引的标头。
  • xml_set_notation_decl_handler: 设定记法宣告的标头。
  • xml_set_object: 使 XML 剖析器用物件。
  • xml_set_processing_instruction_handler: 建立处理指令标头。
  • xml_set_unparsed_entity_decl_handler: 设定未剖析实体宣告的标头。
  • yp_errno: 取得先前 YP 操作的错误码。
  • yp_err_string: 取得先前 YP 操作的错误字串。
  • yp_first: 传回 map 上第一笔符合的资料。
  • yp_get_default_domain: 取得机器的 Domain。
  • yp_master: 取得 NIS 的 Master。
  • yp_match: 取得指定资料。
  • yp_next: 指定 map 的下笔资料。
  • yp_order: 传回 map 的序数。


PHP简介及安装方式

PHP简介及安装方式(含Apache Web Server)

作者：邱宏文

E-mail:chw1204@ms4.hinet.net

  1. 什么是PHP?

    PHP=Personal Home Page Tools，于1994年由Rasmus Lerdorf创造，原本用途只是为知道他自己个人置于 Internet上的履历表曾被谁浏览过。

    PHP是一个在伺服器端执行的Scripting Language。与ASP类似，其目的则为开发动态式的网页并可与资料库连结。

    据估计，于1996年约有15,000个网站使用PHP，至今年1999年年中已有150,000网站使用PHP。

  2. PHP的特性：
  • 免费、轻巧快速 、真正跨平台 。
  • 可支援多种资料库，包括常用的Oracle, mSQL, dBase, Sybase, Informix, MySQL等等。
  • 具备CGI及类似JavaScript在Client端的功能。
  • 语法与C及Perl相近
  1. PHP的线上资源 ：
    • 官方网站： http://www.php.net/
    • 线上说明手册：
      1. 可在www.php.net 查阅或download说明文件。
      2. 在安装完成后，可在PHP的目录底下的子目录../doc中取得，该手册为 html格式，可用浏览器直接浏览。
  • 软体的取得：

    可自www.php.net下载。目前最新版本为PHP 4.0 Beta 2 ，本次示范则以现行主流版本PHP 3.0为主。 其原始程式码为php-3.0.12.tar.gz。

  • 安装方式：
    • 背景描述：本次安装系与安装 Apache Web Server同时进行。系统平台为Linux Slackware 3.6。
    • 应备的软体：php-3.0.12.tar.gz --用以安装PHP。

    apache_1.3.9.tar.gz --用以安装Apache Web Server，该软体可自www.apache.org下载 。
    • 安装流程：

    将apache_1.3.9.tar.gz及php-3.0.12.tar.gz置于 /usr/local目录底下(该目录是一般习惯性的预设位置)并将其解压缩，解压缩完成后，会于/usr/local底下分别产生apache_1.3.9及php-3.0.12等二 个子目录：

      1. gunzip apache_1.3.9.tar.gz
      2. tar xvf apache_1.3.9.tar
      3. gunzip php-3.0.12.tar.gz
      4. tar xvf php-3.0.12.tar
      5. cd apache_1.3.9

        将apache的程式目录指向/www：
      6. ./configure --prefix=/www

        设定PHP的组态：
      7. . cd /usr/local/php-3.0.12
      8. ./configure --with-apache=/usr/local/apache_1.3.9 --enable-track-vars

        其中：--with-apache...为和apache连结成为apacheh的一个模组。

        --enable-track-vars 为启动cookie的get/post等追踪功能。 欲与资料库产生连结，也是在此做config，如 --with-MySQL。

        开始安装PHP ：

      9. make
      10. make install

        设定apache的组态及安装：
      11. cd /usr/local/apache_1.3.9
      12. ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
      13. make
      14. make install

        将原始所附的php.ini范本:php.ini-dist cp 至 /usr/local/lib底下
      15. cd /usr/local/php-3.0.12
      16. cp php3.ini-dist /usr/local/lib/php3.ini

        编修apache的httpd.conf或srm.conf档：
      17. AddType application/x-httpd-php3 .php3

        将php的档案格式的副档名指定为.php3，亦可自行指定，如:.phtml,.php等等。
      18. 启动Apache Web Server：

    在/www/bin目录底下输入并执行 apachectl start便可启动apache server。
    1. 验证是否安装成功：
    1. 在Apache的html储存目录 /www/htdocs 底下用vi或joe等文字编辑器编辑一个 .php3档。
    2. 例子：<?php echo “Hello World!” ; ?>
    3. php script的开始及结束符号可以有四种方式:
      1. <? echo "Hello World" ?>
      2. <?php echo "Hello World" ?>
      3. <script language="php">

        echo "Hello World";

        </script>

      4. <% echo "Hello World" %>
    1. 可能的麻烦：

      若在已安装有Apache的系统中，如教材所附的Slackware3.6，再安装PHP时。要做组态设定会比较麻烦。

    2. 心得：

    如同操作或安装Linux的应用软体一般，安装PHP也须参考许多的说明文件，即使PHP是属比较容易安装的软体。


网页利器PHP简介与安装
作者：施势帆、游裕松

前言

PHP 3 (Hypertext Preprocessor)是一种伺服器端崁入式HTML语言，它的语法大致上与C/C++、Perl、Java相似，只要有简单的程式设计观念便可以轻易的上手，其功能与现今ASP功能类似，可以快速的写出功能强大的网页。PHP3除可以做一般的网页功能外，并提供像一般CGI的使用功能、cookies的功能、档案上传、WWW使用者身分证明、GIF动画（需编辑组态加入GD library）等。

同时PHP3也支援一般Unix系统所使用的资料库，它提供的资料库列表如下：

Adabas D InterBase Solid

dBase mSQL Sybase

Empress MySQL Velocis

FilePro Oracle Unix dbm

Informix PostgreSQL

另外PHP3也提供IMAP, SNMP, NNTP, POP3, HTTP的TCP/IP通讯协定上使用。笔者将利用几期的时间分别来介绍其安装、语法、函式、资料库连结、网页技巧等，或许读者可以先至 http://www.php.net取得最新的软体、资讯和详尽的手册，另外笔者建议可至http://linuxfab.cx/indexForumData.php3?FID=1浏览看看，那有许多相关的讨论。

1. 安装

PHP3可以分别编辑成apache module、fhttpd module、CGI三种形式。

1.1 原始档安装

因为笔者在目前发现PHP4.0 bata1已经公布，故完整安装使用PHP4 bata1安装，应PHP4只有bata版所以并不提供APXS更新及SETUP的方式产生组态安装档，所以必须使用最原始的方式安装，PHP4的组态及使用语法和PHP相同，另外注意PHP4在Apache上组态档设定和自己本身组态档名都以修改，请根据以下步骤安装以免发生问题。

PHP4使用的语法分析器改使用Zend，所以其执行效能比PHP3增强很多，几乎比一般 PHP3、APS快的3~6倍，如读者有兴趣请至http://www.zend.com/观看其比较结果。

下面步骤是针对apache module的PHP4 bata 1原始档快速安装的说明。

Step 1. tar xvfz apache_1.3.6.tar.gz ← 解压缩apache原始档。

Step 2. tar xvf php-4_0b1.tar.tar ← 解压缩php4 bata1原始档。

Step 3. cd apache_1.3.6 ← 切换至apache目录。

Step4. ./configure ← 执行apache组态设定（使用预设组态安装路径为/usr/local/apache）。

Step 5.cd ../php-4.0b1 ← 切换至php4路径。

Step 6 ./configure --with-apache=/root/apache_1.3.6 --enable-track-vars ← 执行php4组态并编辑成apache module型式，--enable-track-vars预设PHP4启动GET/POST/Cookie的功能，如有需要使用其他的参数请使用./configure --help观看其说明。

Step 7. make ← 编辑PHP4。

Step 8. make install ← 安装PHP4。

Step 9 cd ../apache_1.3.6 ←切换回apache目录。

Step10 ./configure --activate-module=src/modules/php4/libphp4.a ← 设定apache组态启动php4的模组。（注意：在apache module php4路径下并不会有libphp4.a这个档案，这是正常的，libphp4.a在之后会被apache 创造出来。）

Step 11. make ← 编辑apache。

Step 12. make install ← 安装apache。

Step 13. 如果需要的话，将执行中的http server停止，并将/usr/local/apache/bin/下的httpd daemon拷贝至原本httpd daemon的路径，将旧的httpd daemon更换成新版，可使用httpd -l检查是否将PHP4编辑进入apache server，再重新启动http server。

Step 14 cd ../php-4.0b1 ← 切换回PHP4路径。

Step 15. cp php3.ini-dist /usr/local/lib/php.ini ← 将php.ini-dist拷贝至/usr/local/lib/php.ini这是PHP4预设的组态设定档预设组态路径，如果要使用其它路径请至Step 6使用以下参数编辑PHP3组态，

--with-config-file-path=/path in step 6

Step 16 编辑 httpd.conf 或 srm.conf 档案，增加下列一行

AddType application/x-httpd-php .php

Step 17. 重新启动apache server。

1.2 RedHat Linux 6.0安装

RedHat 6.0已经将PHP3.0.7安装包含在apache module中了，但是在组态档并没有启动，需编辑以下组态档并重新启动apache。

Setp 1. joe /etc/httpd/conf/httpd.conf

LoadModule php3_module ← 载入php3 module。

modules/libphp3.so ← 设定载入动态module路径及DSO module名称。

AddModule mod_php3.c ← 加入php3 module。

以上的组态已设定完成只需要将#号移除即可。

Setp 2. joe/etc/httpd/conf/srm.conf

AddType application/x-httpd-php3 .php3 ←加入处理php3档案

AddType application/x-httpd-php3-source .phps

以上的组态已设定完成只需要将#号移除即可。

Setp 3. 重新启动apache server，执行 /etc/rc.d/init.d/httpd restart。

1.3 PHP3更新

假如读者的apache一开始就编辑成DSO则可随时利用PHP原始码更新PHP3 apache module，步骤如下：

Setp 1.tar xvfz php-3.10.tar.gz ← 解压缩php3原始档。

Setp 2. cd php-3.0.10 ← 切换至php-3.0.10目录

Setp 3. 组态

./configure --with-apxs=/usr/local/apache/bin/apxs

（设定apache apxs的执行路径和档案名称）

--with-config-file-path=/usr/local/lib

（设定php3之前组态档的路径）

Step 4. make install ← 编辑并安装

2. 测试

我们可以执行下列步骤来测试PHP3是否正确编辑到apache module中。

Setp 1.切换至apache首页的路径（一般设定安装为/usr/local/apache/htdoc，RedHat Linux为/home/httpd/html)

Setp 2. 编辑新档（范例名称为info.php3），编辑内容如下：

<?php

phpinfo(); // phpinfo()为PHP3本身提供系统资讯函式

?>

Step3. 透过浏览器观看结果，如图一所示：

图一

3. PHP3组态档说明

PHP3的组态档档名为php3.ini，其预设路径为/usr/local/lib，若RedHat Linux系统则路径为/etc/httpd/，如果要使用其它的组态档路径或是使用旧的PHP3组态，只要在编辑PHP3时加入下面参数即可--with-config-file-path=DIR，其中DIR为使用路径。

PHP3.ini这个档案是当PHP3语法分析器启动时就会根据其设定来启动PHP3语法分析器，如果PHP3是编译成伺服器模组的话，这个档案会于伺服器启动一起启动，但是如果是编辑成CGI的形式，则这个档案会于每次执行CGI就读取此设定。

PHP3组态设定主要分为以下六大部分︰

1. 一般的PHP3组态设定。

2. Mail的组态设定。

3. PHP3安全模式的组态设定。

4. PHP3除错的组态设定。

5. 扩展性的载入设定。

6. 资料库的组态设定。

我们可以自己编辑一个PHP3的档案，在档案中呼叫其info()的函数，并输出在浏览器上，这样就可以从远端得知自己的PHP3的组态设定状态。

一般的PHP3组态设定说明︰（较重要的几项说明）

1.display_errors=on (on/off)

设定是否将PHP3语法分析器所检查出的错误，显示于HTML档上。

2. engine=on (on/off)

设定是否启动PHP3语法分析器，只有当PHP3编辑成apache模组时，这个指令可以根据不同的路径、虚拟主机路径在apache组态档设定成(on/off)。

3.error_reporting=7

设定PHP3语法错误的等级，其设定值为整数值，数值意义如下︰

数值 | 数值意义
1 | 普通错误
2 | 普通警告
4 | 语法错误
8 | 警要性关联性错误

系统预设值为7，就是显示普通错误、普通警告和语法错误。

4.max_execution_time=30

设定每个PHP3程式所能执行的最大时间，预设为30秒。

5. memory_limit= 8388608

设定每个PHP3程式所能使用的最大记忆体大小，预设为8388608也就是8MB。

6. precision =14

设定浮点数其有效位数为几位数。

7.upload_max_filesize = 2097152

设定最大上传档案大小。

8.include_path =

额外设定PHP3的include档路径。

9.safe_mode boolean(on/off)

设定PHP3是否可以启动成为安全模式。

10.sendmail_path

设定sendmail程式的路径。

11.track_vars boolean(on/off)

设定是否使用track_var的功能， $HTTP_GET_VARS, $HTTP_POST_VARS and $HTTP_COOKIE_VARS

12.log_errors (on/off)

是否记录执行错误的PHP3程式错误。

5 使用简介

我们可以使用下列方法在HTML档中执行PHP3的指令：(copy from http://www.php.net/manual/html/language.basic-syntax.html)

1. <? echo ("this is the simplest, an SGML processing instruction\n"); ?>

2. <?php echo("if you want to serve XML documents, do like this\n"); ?>

3. <script language="php">

echo ("some editors (like FrontPage) don't

like processing instructions");

</script>

4. <% echo ("You may optionally use ASP-style tags"); %>

<%= $variable; # This is a shortcut for "<%echo .." %>

其中笔者比较建议使用第二种方式，简单清楚，或许稍有程式设计的读者可以先看一下http://www.php.net/docs.php3，十分容易的。接下来笔者使用以下范例来说明PHP3 date函数的用法︰

<CENTER>One 3.0.10 script</CENTER>

<? php

$today = date("Y-m-d");

$time = date("H:i:s");

PRINT "<CENTER>Today is: $today</CENTER>";

PRINT "<CENTER>Now TIME is: $time</CENTER>";

?>

执行的结果如图二所示：

图二

而此时可以检视输出的HTML档，如图三所示：

图三

从上面范例我们不难发现使用PHP3所写的部分并不会显示在一般网页原始程式上，这项就可有效保障自身网路程式的智慧财产权。

6. 语法说明

6.1程式注解方式

PHP3提供程式的注解方式有C、C++和Unix shell三种方式，范例如下：

<?php

echo "This is a test"; // This is a one-line c++ style comment ← 这是C++所使用的注解方式，就是使用//后面加上你要的注解文字， // 使用//注解方式其有效范围为到该行结束为止。

/* This is a multi line comment

yet another line of comment */ ← 这是C所使用的注解方式，也就是使用/*后面加上你要的注解文字，注解结束并加上*/，让程式了解注解结束。另外使用/*需注意在注解符号后不可有空白。

echo "This is yet another test";

echo "One Final Test"; # This is shell-style style comment

?>

井字号这是一般Unix shell注解的使用方法，使用时需注意#的有效范围为一行，如要多行注解则要在每行注解开头加上井字号。

6.2 资料类型

PHP提供以下的形态：

1. Integers 整数

2. Floating point numbers 浮点数

3. Strings 字串

4. Arrays 矩阵

5. Objects 物件

6.2.1 Integers 整数

整数的类型可以使用10、8或是16进制的数字表示法，例如36可以使用以下方式表达︰

$a = 36; # 10进制

$a = 044; # 8进制

$a = 0x24; # 16进制

$a=-36 ;# 负整数

凡是以0开头的常数会被compiler 视为8进制，而以0x开头的常数视为16进制。

6.2.2 Floating point numbers 浮点数

浮点数有以下两种类型，浮点数在PHP3下视为double的型别。

$a = 1.234;

$a = 1.2e3;

以上两种都是浮点数1.234的表示法，e的浮点数表示法是一般工程上常使用的表示方法。

6.2.3 Strings 字串

字串有以两种使用方式，第一种表示方法为将字串放于一对双引号之间，变数在双引号之间将被扩充(但主要还是受到语法分析器限制)，在一般C、Perl语言中有定义一些特殊的反斜线字元(“/”)，以使用在一般特殊的场所或用途，其符号说明如下︰

符号 | 说明
\n | 换行 New line
\r | carriage
\t | Tab键
\\ 显示\
\$ 显示$
\” 显示”

使用特殊字元，你可以从其他字元跳脱，但是注意这样产生的错误可能会造成高于语法错误的错误等级。第二种字串使用方法是限定字串使用单引号(‘ ‘)，字元将不能使用任何变数的延伸和使用反斜线。PHP3在处理字串除了”\\”和”\”外，你可以使用反斜线(“/”)单引号(‘)和双引号(“)。

当字串要被使用成数字时，它的结果数值和类型是借由以下决定，当字串转换为数值时，如果字串中有英文字母的e、E和小数点时，PHP3会自动将字串定为double。

$foo = 1 + "10.5"; // $foo is double (11.5)

$foo = 1 + "-1.3e3"; // $foo is double (-1299)

$foo = 1 + "bob-1.3e3"; // $foo is integer (1)

$foo = 1 + "bob3"; // $foo is integer (1)

$foo = 1 + "10 Small Pigs"; // $foo is integer (11)

$foo = 1 + "10 Little Piggies"; // $foo is integer (11)

$foo = "10.0 pigs " + 1; // $foo is integer (11)

$foo = "10.0 pigs " + 1.0; // $foo is double (11)

6.2.4 矩阵

单一矩阵︰

PHP提供阶梯状和关联性矩阵，事实上这两种并没有不同，你可以制造一个矩阵并使用list() or array() functions，如此你将可以设定矩阵中的每一个元素。

$a[0] = "abc";

$a[1] = "def";

$b["foo"] = 13;

也可以在所设定矩阵后面加上出始值︰

$a[] = "hello"; // $a[2] == "hello"

$a[] = "world"; // $a[3] == "world"

矩阵可以储存藉着使用以下的函数asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), and uksort()。

多维矩阵可以藉着以下的方式产生︰

$a[1][0] = $f; # 二维矩阵

$a["foo"][4]["bar"][0] = $f; # 四维矩阵

举例如下︰

# Example 1:

$a["color"] = "red";

$a["taste"] = "sweet";

$a["shape"] = "round";

$a["name"] = "apple";

$a[3] = 4;

# Example 2:

$a = array(

"color" => "red",

"taste" => "sweet",

"shape" => "round",

"name" => "apple",

3 => 4

);

array() 可以被使用在多为矩阵中。

<?

$a = array(

"apple" => array(

"color" => "red",

"taste" => "sweet",

"shape" => "round"

),

"orange" => array(

"color" => "orange",

"taste" => "sweet",

"shape" => "round"

),

"banana" => array(

"color" => "yellow",

"taste" => "paste-y",

"shape" => "banana-shaped"

)

);

echo $a["apple"]["taste"]; # will output "sweet"

?>

6.2.5 物件

起始化一个物件，必须使用新的叙述才能将物件提供给变数使用，举例如下︰

class foo {

function do_foo () {

echo "Doing foo.";

}

}

$bar = new foo;

$bar -> do_foo ();

6.2.6 改变类型

PHP3并不需要或者说是并不提供额外类型让使用者去定义变数，变数本身的类型定义是借由变数的本身的类型来自行决定，也就是说假如$a是字串，则$a就是字串类型，如果$a=10，则$a此时的类型为整数。举例使用+来测试PHP3的自动类型转换，如果变数是整数结果就是整数，字串结果也就成为字串。如果你真的要订定变数类型，请观看以下说明变更类型。

$foo = "0"; // $foo is string (ASCII 48)

$foo++; // $foo is the string "1" (ASCII 49)

$foo += 1; // $foo is now an integer (2)

$foo = $foo + 1.3; // $foo is now a double (3.3)

$foo = 5 + "10 Little Piggies"; // $foo is integer (15)

$foo = 5 + "10 Small Pigs"; // $foo is integer (15)

自行设定变数类型方法和C有点类似，只要在变数之前加上( )，( )中加入所要设定的类型即可，举例如下︰

$foo = 10; // $foo is an integer

$bar = (double) $foo; // $bar is a double

自订类型的型态允许下面几种方式︰

(int), (integer) - cast to integer

(real), (double), (float) - cast to double

(string) - cast to string

(array) - cast to array

(object) - cast to object

注意︰在( )设定类型中可以使用空白加上类型名称，举例如下︰

$foo = (int) $bar;

$foo = ( int ) $bar;

6.3 变数范围

任何变数在PHP3函数中都预设为区域变数，例如︰

$a = 1; // 这时候变数a在整个程式中的值，永远为1，也就是$a为整体性变数。

Function Test () {

echo $a; // 因为$a被呼叫使用于函数中，所以$a此时为区域变数。

}

Test ();

这个程式执行会出现Warning: Uninitialized variable or array index or property (a)，这样的错次讯息因为在echo这但叙述中$a为区域变数，它并未给$a设定值，所以输出时会产生错误。你必须注意在PHP3变数的范围有一点点不同于C，在C语言在上面的范例区域变数值会自动设定为1，除非在Function中宣告$a global 变数，在PHP3设定整体变数再函数使用必须向下面范例一样设定︰

$a = 1;

$b = 2;

Function Sum () {

global $a, $b;

$b = $a + $b;

}

Sum ();

echo $b;

则上面输出的结果等于3，因为在Function中加入global使得变数a,b将归类成为整体性变数。在这个Function并没有限制只能有多少个变数可以设定为区域性变数。第二种方法允许Function使用设定整体性变数的方式，是使用PHP3整体性矩阵($GLOBALS)来定义整体性变数。上面的范例也可以书写成以下的方式。

$a = 1;

$b = 2;

Function Sum () {

$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];

}

Sum ();

echo $b;

这个$GLOBALS矩阵是一个关联性矩阵，它的矩阵元素内容是和输入的内容有关联。其他几个重要的变数区域特点是静态变数，静态变数是只有存在于Function之中，但是它并不会遗弃它的值当程式执行结束并跳出Function，它的值还是不变。利用以下的范例思考一下静态变数在PHP3的意义。

Function Test () {

$a = 0;

echo $a;

$a++;

}

上面是一个没有作用的程式。

6.4 设定变数

变数在一般PHP3是使用和设定成动态的数值，一般变数的语法使用语法如下︰

$a=”hello”;

设定$a是各字串变数，同时$a的值为hello。如何在一般变数设定中在设定变数呢？设定的方法如下，就是设定变数完之后，再加上设定变数的符号$，这样就设定成双层变数，举例如下︰

$a = "hello";

$$a = "world";

这个时候PHP3会将$$a的第一次变数设定为hello，再将$$a设定为$hello。上面的例题变数a=hello，变数变数a也就是变数hello的内容是world，因此上述内容等于以下表示法︰

echo "$a ${$a}"; // 它正确的输出结果也和以下结果相同︰

echo "$a $hello";

上述的范例输出为hello world.。

6.4.1 PHP从HTML中取得变数值

当一个表单由使用只送出，PHP将自动产生一个变数，同时变数值为所设表单所送出的值。详细考虑以下范例︰

<form action="foo.php3" method="post">

Name: <input type="text" name="name"><br>

<input type="submit">

</form>

当submitted PHP将自动产生一个$name，而$name的值就是我们输入的值。使用矩阵得到外在变数，只能使用单为矩阵方式，范例如下︰

<form action="array.php" method="post">

Name: <input type="text" name="personal[name]"><br>

Email: <input type="text" name="personal[email]"><br>

Beer: <br>

<select multiple name="beer[]">

<option value="warthog">Warthog

<option value="guinness">Guinness

</select>

<input type="submit">

</form>

假如在安装 PHP有安装track_vars并予组态档设定这个功能时，则可以经由POST or GET得到变数并可配合PHP提供的矩阵$HTTP_POST_VARS 、$HTTP_GET_VARS来使用。

当我们要使用图形的submit button只要类似底下的方法就行了︰

<input type=image src="image.gif" name="sub">

6.5 环境变数

PHP可以将环境变数当成一般PHP的变数，举例如下︰

echo $HOME; //假如有设定系统家目录变数，则会输出变数内容。

如何得知变数的类型，可以使用PHP提供的函数得知，函数提供如下，gettype(), is_long(),

is_double(), is_string(), is_array(), and is_object()。

6.6 算术式

算术式是PHP相当重要的基本的功能之一，算术的运算对象是资料，算术式是将算术与资料、变数、函数做合法用算。运算符号说明︰

符号 | 名称
$a+$b | 加
$a-$b | 减
$a*$b | 乘
$a/$b | 除
$a%$b | 余数

范例︰

$a=10;

$b=3;

$c=$a%$b;

echo $c // 此时输出为1。

字串连结符号︰字串连结符号，只有一种就是使用小数点加以连结两个字串，举例如下︰

$a = "Hello ";

$b = $a . "World!";

print $b; // 则显示字串HelloWorld。

指定符号︰(=)

基本的指定符号为等号(=)，你必须承认它是一个相等的符号，等号的意义是将右边的值设定到等号左边。

范例︰

$a = ($b = 4) + 5; // a的值为9，因为变数b被设定为4。

我们可以立刻使用指定符号来完成综合运算，例如字串结合、算数运算等等….举例如下︰

$a = 3;

$a += 5; //此时$a=8

$b = "Hello ";

$b .= "There!"; //设定$b为"Hello There!"，它等于以下叙述

$b = $b . "There!"

Bitwise Operators可以让你去设定每一个bit是(0或1)。

Bitwise Operators 说明表格如下︰

符号 | 名称 | 结果
$a & $b | And | 将a和b对应的位元作AND
$a | $b | Or | 将a和b对应的位元作OR
~ $a | Not | 将a的每一个位元作NOT
$a << $b | 左移 | 将a的位元左移b个bit(其意义为x2)
$a >> $b | 右移 | 将a的位元右移b个bit (其意义为 /2)

范例︰

$a=10;

$b=4;

$c=$a&$b;

print $c; // 输出为0

逻辑运算(Logical Operators)︰

符号 | 名称 | 结果
$a and $b | And | 对a和b做逻辑And
$a or $b | Or | 对a和b做逻辑Or
$a xor $b | Xor | 对a和b做逻辑Xor
! $a | Not | 对a做逻辑Not
$a && $b | And | 对a和b做逻辑And
$a || $b | Or | 对a和b做逻辑Or

上面and和&&，or和||意义逻辑意义是相同，但其拥有不同的优先权。

范例︰将上述范例的$c修改成，$c=$a xor $b 其输出为10。

比较符号︰

比较无号的意义是你能将两个值加以比较，其运算结果传回ture(1)、not ture(0)。

符号 | 名称 | 结果
$a == $b | 相等 | 比较a是否等于b
$a != $b | 不等 | 比较a是否不等于b
$a < $b | 小于 | 比较a是否小于b
$a > $b | 大于 | 比较a是否大于b
$a <= $b | 小于等于 | 比较a是否小于等于b
$a >= $b | 大于等于 | 比较a是否大于等于b

另外PHP也提供和C语言相同的条件符号？，其使用格式如下︰

符号 范例 说明
？︰ a？b︰c 若a为真，则取b，否则则取c

运算符号的优先顺序︰

运算符号的优先顺序决定两个运算式，该如何一起工作︰Examlpe 1 + 5 * 3 大家都知道答案为16并不是18，因为*的运算优先权大于+号，这样大家明白优先权的重要性了吧。请观看PHP手册的运算符号优先权列表。

6.8 PHP流程控制

6.8.1 条件控制

if 语法︰

if (条件式)

{叙述}

范例︰

if ($a > $b)

print "a is bigger than b";

当$a>$b则显示a is bigger than b。

也可以配合else和else if 来加强if的功能，举类如下︰

if ($a > $b) {

print "a is bigger than b";

}

elseif ($a == $b) {

print "a is equal to b";

}

else {

print "a is smaller than b";

}

以上范例就是利用if写成一个判定两数>、<、= 的比较式子。

PHP例外提供另一种if 的语法，你可以选择要使用哪一种方式来书写，这个方式和HTML的if是相同的，举例如下︰

if ($a == 5):

print "a equals 5";

print "...";

elseif ($a == 6):

print "a equals 6";

print "!!!";

else:

print "a is neither 5 nor 6";

endif;

switch 是多重判断的流程控制指令，它的书写方式较if-else简单，举例如下︰

switch ($i) {

case 0:

print "i equals 0";

break;

case 1:

print "i equals 1";

break;

case 2:

print "i equals 2";

break;

default:

print "i is not equal to 0, 1 or 2";

}

6.8.2 回圈控制

while是最简单的回圈，基本的while语法如下︰

while (条件式)

{叙述}

其动作方式为当符合条件式的条件，则进行动作否则就跳过while回圈的动作。范例如下︰

/* example 1 */

$i = 1;

while ($i <= 10) {

print $i++;

}

/* example 2 */

$i = 1;

while ($i <= 10):

print $i;

$i++;

endwhile;

这两个范例都是将1~10显示出来。

do..while是相似于while回圈，其基本动作方式如下︰

do{动作}

while(条件式)

do..while是先动作然后在检查条件式条件，直到不符合条件才跳出回圈，范例如下︰

do {

if ($i < 5) {

print "i is not big enough";

break;

}

$i *= $factor;

if ($i < $minimum_limit) {

break;

}

print "i is ok";

...process i...

} while(0);

for是PHP最复杂的回圈，它基本的语法如下︰

for (expr1; expr2; expr3)叙述

expr1是for回圈起始值设定，只有在第一次执行才会被执行。

expr2 是for回圈条件判断式，条件为真则执行叙述。

expr3 当for回圈执行完expr2的叙述时，将值都到指加以运算，举例如下︰

/* example 1 */

for ($i = 1; $i <= 10; $i++) {

print $i;

}

此范例输出1~10的值。

break指令是可以从正在执行的回圈中跳出，范例如下︰

$i = 0;

while ($i < 10) {

if ($arr[$i] == "stop") {

break;

}

$i++;

}

continue 被使用在一回圈结构之中，它可以跳到回圈其他部分并加以执行回圈，或重复回圈运作等等的功能，continue范例如下︰

while (list($key,$value) = each($arr)) {

if ($key % 2) { // 重设定的数字中跳脱

continue;

}

do_something_odd ($value);

}

6.9 require

require就和C语言中的箝制处理#include相同，但结束叙述必须加上;，举例如下︰

require 'header.inc';

6.10 return

数值可以返回使用return的语法将数值return，任何类型都可以return包含lists、 objects，举例如下︰.

function square ($num) {

return $num * $num;

}

echo square (4); // outputs '16'.

结语

或许很多人都知道M$的ASP，事实上还有一个更好的网页设计语言 -- PHP，PHP高度的跨平台性，而且效率又高，可惜国内的资料不丰，希望能藉者笔者简单的说明可以让更多的人接触到这好的网页设计语言，并从中学习。另外PHP Club( http://phpclub.unet.ru)是一群程式设计师组织起来，成立的 MySQL 和 PHP 技术讨论专门网页，有兴趣的读者可以前往参观。

施势帆，任职于亚东工专电机科

E-mail：shie@digital.oit.edu.tw

URL：http://mouse.oit.edu.tw

游裕松，任职于网虎国际公司

E-mail：kevin@mouse.oit.edu.tw


First program

 hello, world


访客计数器 最终版

 您是第 10 位参观者


参考资料与网路相关资源

  • 俞旭升译，物件导向程式设计导论 (An Introduction to Object-Oriented programming)，第三至六章，维科，台北(1992)

  • 俞盘祥，Oracle 7 资料库系统基础，第七章，儒林，台北(1995)

  • 江永祥、廖先志，深入HTML/WEB设计，P.297-P.298，松格，台北(1995)

  • 钱培德，UNIX 系统程式设计技术，第六章，儒林，台北(1991)

  • 黄俊翔译，Linux 应用程式发展手册 (Linux Application Development)，第九至十三章，碁峰，台北(1998)

  • 蔡文能译，C 程式语言第二版 (The C Programming Language, 2nd Edition)，P1-2，松岗，台北(1989)

  • 李国熙、许建发译，Perl 程式设计 (Programming Perl, 2nd Edition)，第二章，欧莱礼，台北(1999)

  • 张苑蓉译，SNMP 网路管理协定 (Windows NT SNMP)，第四章，欧莱礼，台北(1999)

  • Leon Atkinson，Core PHP programming，Prentice Hall PTR，NJ, USA(1999)

  • Stephen Spainhour、Robert Eckstein，Webmaster In a nutshell, 2nd Edition，O'Reilly & Associates, Inc.，CA, USA(1999)


函式:Abs()

数学运算函式库

Abs

取得绝对值。

语法: mixed abs(mixed number);

传回值: 混合型态资料

函式种类: 数学运算

内容说明

传回参数 number 的绝对值。若 number 是倍精确浮点数，则传回值也是倍浮点数；其它的型态则传回型态为整数。


函式:Acos()

数学运算函式库

Acos

取得反余弦值。

语法: float acos(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

传回参数 arg 的反余弦值 (arc cosine)。

参考


函式:ada_afetch()

Adabas D 资料库连结函式库

ada_afetch

取得资料库的传回列。

语法: int ada_afetch(int result_id, int rownumber, array result_array);

传回值: 整数

函式种类: 资料库功能

内容说明

将资料库传回的列资料 (row) 放入阵列变数中。参数 result_id 为资料库传回 ID 值。参数 rownumber 为指定的取得列 (row)。阵列参数 result_array 为取得列的资料阵列，通常在前面加上 "&" 符号。

参考

odbc_fetch_into()

[ 下一页 ]


函式:ada_autocommit()

Adabas D 资料库连结函式库

ada_autocommit

开关自动更动功能。

语法: int ada_autocommit(int connection_id, int [OnOff]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启或关闭自动更新 (auto-commit) 功能。参数 connection_id 为资料库连结的 ID 值。参数 OnOff 可省略，表开启或关闭自动更动功能，内定值为 on，欲关闭则设 off。传回值为目前的自动更新状态，若开启自动更新功能则传回 true；若关闭自动更新功能则传回 false。

参考

odbc_autocommit()


函式:ada_close()

Adabas D 资料库连结函式库

ada_close

关闭 Adabas D 连结。

语法: void ada_close(int connection_id);

传回值: 无

函式种类: 资料库功能

内容说明

本函式用来关闭与 Adabas D 资料库之间的连结。参数 connection_id 为资料库连结代号 ID 值。若正在执行 transactions 则无法关闭连结。

参考

odbc_close()


函式:ada_commit()

Adabas D 资料库连结函式库

ada_commit

更动 Adabas D 资料库。

语法: int ada_commit(int connection_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来更动 (commit) Adabas D 资料库。参数 connection_id 为资料库连结的 ID 值。若有设定 ada_autocommit() 成自动更动资料库时，则不需使用本函式。

参考

odbc_commit()


函式:ada_connect()

Adabas D 资料库连结函式库

ada_connect

连结至 Adabas D 资料库。

语法: int ada_connect(string dsn, string user, string password);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来连结到 Adabas D 资料库，传回值为连结的代号 ID 值。参数 dsn 为资料来源名称 (Data Sources Name)。参数 user 及 password 分别为连结的帐号及密码。

参考

odbc_connect()


函式:ada_exec()

Adabas D 资料库连结函式库

ada_exec

执行 SQL 指令。

语法: int ada_exec(int connection_id, string query);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来执行 SQL 的 query 指令。参数 connection_id 为 Adabas D 连结代号 ID 值。参数 query 则为欲执行的指令。传回值为 Result ID 值。

参考

odbc_exec()


函式:ada_fetchrow()

Adabas D 资料库连结函式库

ada_fetchrow

取得传回一列。

语法: int ada_fetchrow(int result_id, int [row_number]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的一列。参数 result_id 为 Adabas D 传回 ID 值。参数 rownumber 可省略，为指定的取得列 (row)。

参考

odbc_fetch_row()


函式:ada_fieldname()

Adabas D 资料库连结函式库

ada_fieldname

取得栏位名称。

语法: string ada_fieldname(int result_id, int field_number);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的栏位名称。参数 result_id 为 Adabas D 资料库传回 ID 值。参数 field_number 为指定的栏位，起始值为 1。

参考

odbc_field_name()


函式:ada_fieldtype()

Adabas D 资料库连结函式库

ada_fieldtype

取得栏位资料形态。

语法: string ada_fieldtype(int result_id, int field_number);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的栏位资料形态。参数 result_id 为 Adabas D 传回 ID 值。参数 field_number 为指定的栏位，起始值为 1。

参考

odbc_field_type()


函式:ada_freeresult()

Adabas D 资料库连结函式库

ada_freeresult

释出传回资料的记忆体。

语法: int ada_freeresult(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可用来释出传回资料所使用的记忆体，通常在系统记忆体资源不足的情形下才需要使用。参数 result_id 为 Adabas D 传回 ID 值。传回值永远都是 true。

参考

odbc_free_result()


函式:ada_numfields()

Adabas D 资料库连结函式库

ada_numfields

取得栏位数目。

语法: int ada_numfields(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得传回资料的栏位数目。参数 result_id 为 Adabas D 传回 ID 值。若发生错误则传回 -1。

参考

odbc_num_fields()


函式:ada_numrows()

Adabas D 资料库连结函式库

ada_numrows

取得传回列数目。

语法: int ada_numrows(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得传回列的数目。参数 result_id 为 Adabas D 资料库传回 ID 值。若有错误发生则传回 -1。

参考

odbc_num_rows()


函式:ada_result()

Adabas D 资料库连结函式库

ada_result

取得传回资料。

语法: string ada_result(int result_id, mixed field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得传回的资料。参数 result_id 为 Adabas D 传回 ID 值。参数 field 可以是数字形态，代表指定的栏位序号 (从 1 开始)；亦可以是字串形态，为指定的栏位名称。

参考

odbc_result()


函式:ada_resultall()

Adabas D 资料库连结函式库

ada_resultall

传回 HTML 表格资料。

语法: int ada_resultall(int result_id, string [format]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来将取得的资料转成 HTML 的表格 (table) 格式。参数 result_id 为 Adabas D 传回 ID 值。参数 format 可省略，为表格的特殊设定值。传回值为资料列数。

参考

odbc_result_all()


函式:ada_rollback()

Adabas D 资料库连结函式库

ada_rollback

撤消当前交易。

语法: int ada_rollback(int connection_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式取消 Adabas D 交易处理 (transaction) 对资料库所做的修改。若成功则传回 true，反之传回 false。

参考

odbc_rollback()


函式:AddSlashes()

字串处理函式库

AddSlashes

字串加入斜线。

语法: string addslashes(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式使需要让资料库处理的字串，引号的部份加上斜线，以供资料库查询 (query) 能顺利运作。这些会被改的字元包括单引号 (')、双引号 (")、反斜线 backslash (\) 以及空字元 NUL (the null byte)。

参考

stripslashes() htmlspecialchars() quotemeta()

[ 下一页 ]


函式:apache_lookup_uri()

阿帕契伺服器专用函式库

apache_lookup_uri

获得所有的 URI 相关资讯。

语法: class apache_lookup_uri(string filename);

传回值: 类别

函式种类: PHP 系统功能

内容说明

这个函式将 URI 的相关讯息传回到类别变数中。传回的类别变数包括下列的属性:

  • status
  • the_request
  • status_line
  • method
  • content_type
  • handler
  • uri
  • filename
  • path_info
  • args
  • boundary
  • no_cache
  • no_local_copy
  • allowed
  • send_bodyct
  • bytes_sent
  • byterange
  • clength
  • unparsed_uri
  • mtime
  • request_time


函式:apache_note()

阿帕契伺服器专用函式库

apache_note

获得及设定阿帕契伺服器的请求纪录。

语法: string apache_note(string note_name, string [note_value]);

传回值: 字串

函式种类: PHP 系统功能

内容说明

这个阿帕契伺服器特有的函式能设定及取得请求纪录表的值。若只代入一个参数，则传回目前纪录的 note_name 值。若代入二个参数，则传回先前的 note_name 值，并将 note_name 设为新的 note_value 值。


函式:array()

阵列处理函式库

array

建立一个新的阵列。

语法: array array(...);

传回值: 阵列

函式种类: 资料处理

内容说明

传回的参数是阵列形态。参数可以是带有 => 运算子的索引。array() 其实不是一个正规的函式，它主要是要用来表示阵列。

使用范例

下面范例用显示如何建立一个二维阵列，如何指定联合阵列的键值，及如何略过和继续阵列中的数字索引。

$fruits = array(
"fruits" => array("a"=>"orange","b"=>"banana","c"=>"apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes" => array("first", 5 => "second", "third")
);

参考

list()


函式:array_walk()

阵列处理函式库

array_walk

让使用者自订函数能处理阵列中的每一个元素。

语法: int array_walk(array arr, string func);

传回值: 整数

函式种类: 资料处理

内容说明

此函式使每个阵列元素 arr 依序与函式名称 func 相对应。元素传送到函式 func 的第一个参数，若参数超过一个，则每次都会有警告讯息。要处理警告讯息，可在本函式前面加上 '@' 字元 (变成 @array_walk)；或是使用 error_reporting 函式。

注意: 使用者自订函式 func 真的会将阵列元素 arr 依序代入，所以任何对元素所做的改变都会影响到阵列本身。

使用范例

<?
$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");

function test_alter( $item1 ) {
$item1 = 'bogus';
}

function test_print( $item2 ) {
echo "$item2<br>\n";
}

array_walk( $fruits, 'test_print' );
array_walk( $fruits, 'test_alter' );
array_walk( $fruits, 'test_print' );
?>

参考


函式:arsort()

阵列处理函式库

arsort

将阵列的值由大到小排序。

语法: void arsort(array array);

传回值: 无

函式种类: 资料处理

内容说明

这个函式将阵列的值重新排序，由大至小排列。阵列的索引亦跟着值的顺序而变动。当您在程式中需要重新整理阵列值的顺序时，就可以使用这个函式。

使用范例

底下的范例传回的结果为
fruits[a] = orange
fruits[d] = lemon
fruits[b] = banana
fruits[c] = apple。
我们可以看到水果名 (阵列值) 已按英文字母的顺序由 z 往 a 重新排序，而索引亦跟着值变动。

<?
$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
arsort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."\n";
}
?>

参考


函式:Asin()

数学运算函式库

Asin

取得反正弦值。

语法: float asin(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

传回参数 arg 的反正弦值 (arc sine)。

参考


函式:asort()

阵列处理函式库

asort

将阵列的值由小到大排序。

语法: void asort(array array);

传回值: 无

函式种类: 资料处理

内容说明

这个函式将阵列的值重新排序，由小至大排列。阵列的索引亦跟着值的顺序而变动。当您在程式中需要重新整理阵列值的顺序时，就可以使用这个函式。

使用范例

底下的范例传回的结果为
fruits[c] = apple
fruits[b] = banana
fruits[d] = lemon
fruits[a] = orange
我们可以看到水果名 (阵列值) 已按英
文字母的顺序由 a 往 z 排序，而索引亦跟着值变动。

<?
$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
asort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."\n";
}
?>

参考


函式:aspell_check()

拼字检查函式库

aspell_check

检查一个单字。

语法: boolean aspell_check(int dictionary_link, string word);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式检查单字的拼字。若拼字正确则传回 true，不正确则传回 false。

使用范例

$aspell_link=aspell_new("english");
if (aspell_check($aspell_link,"testt")) {
echo "This is a valid spelling";
} else {
echo "Sorry, wrong spelling";
}


函式:aspell_check-raw()

拼字检查函式库

aspell_check-raw

检查一个单字，即使拼错也不改变或修正。

语法: boolean aspell_check_raw(int dictionary_link, string word);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式检查单字的拼字。若拼字正确则传回 true，不正确则传回 false。本函式不会改变或者修正使用者的拼字。

使用范例

$aspell_link=aspell_new("english");
if (aspell_check_raw($aspell_link,"testt")) {
echo "This is a valid spelling";
} else {
echo "Sorry, wrong spelling";
}


函式:aspell_new()

拼字检查函式库

aspell_new

载入一个新的字典。

语法: int aspell_new(string master, string personal);

传回值: 整数

函式种类: 资料处理

内容说明

本函式载入一个新的字典，并赋与一个新的身份值 (整数)，以供程式中使用。

使用范例

$aspell_link=aspell_new("english");


函式:aspell_suggest()

拼字检查函式库

aspell_suggest

检查一个单字，并提供拼字建议。

语法: array aspell_suggest(int dictionary_link, string word);

传回值: 阵列

函式种类: 资料处理

内容说明

本函式检查单字的拼字。并给予可能的拼法及正确的建议，以阵列型态将结果传回。

使用范例

<?
$aspell_link=aspell_new("english");

if (!aspell_check($aspell_link,"testt")) {
$suggestions=aspell_suggest($aspell_link,"testt");

for($i=0; $i < count($suggestions); $i++) {
echo "Possible spelling: " . $suggestions[$i] . "<br>";
}
}
?>


函式:Atan()

数学运算函式库

Atan

取得反正切值。

语法: float atan(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

传回参数 arg 的反正切值 (arc tangent)。

参考


函 式：Atan2

函式:Atan2()

数学运算函式库

Atan2

计算二数的反正切值。

语法: float atan2(float y, float x);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式用来计算二数 y、x 的反正切值，计算结果与 atan() 计算 y/x 类似，但本函式会因 x、y 的正负号影响结果。而本函式的传回值必落在正负的圆周率间 (-PI <= 值 <= PI)。

参考


函式:base64_decode()

URL 处理函式库

base64_decode

将 BASE64 编码字串解码。

语法: string base64_decode(string encoded_data);

传回值: 字串

函式种类: 编码处理

内容说明

本函式将以 MIME BASE64 编码字串解码。解码后的字串可能为中文字串或其它的二进位资料。

参考

base64_encode()


函式:base64_encode()

URL 处理函式库

base64_encode

将字串以 BASE64 编码。

语法: string base64_encode(string data);

传回值: 字串

函式种类: 编码处理

内容说明

本函式将字串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网路上顺利传输。在 BASE64 编码后的字串只包含英文字母大小写、阿拉伯数字、加号与反斜线，共 64 个基本字元，不包含其它特殊的字元，因而才取名 BASE64。编码后的字串比原来的字串长度再加 1/3 左右。更多的 BASE64 编码资讯可以参考 RFC2045 文件之 6.8 节。

参考


函式:base_convert()

数学运算函式库

base_convert

转换数字的进位方式。

语法: string base_convert(string number, int frombase, int tobase);

传回值: 字串

函式种类: 数学运算

内容说明

本函式将数字字串 number 从以 frombase 进位转换到以 tobase 进位。本式能够处理的由以二进位到以三十六进位之间的进位方式。在十进位之前都是以数字表示，而在超过十进位之后就用英文字母表示。例如十六进位个位数依序为 123456789abcdef，10 的顺序是第十七个，这时才进一位。而三十六进位 a 是第十个、b 为第十一个、z 为第三十六个、10 是第三十七个，这时才进位。

使用范例

本例将十六进位字串转成二进位字串

<?php
$binary = base_convert($hexadecimal, 16, 2);
echo "十六进位字串\"$hexadecimal\"转成二进位为\"$binary\"。";
?>


函式:basename()

档案系统函式库

basename

传回不含路径的档案字串。

语法: string basename(string path);

传回值: 字串

函式种类: 档案存取

内容说明

将含路径及档案字串中的路径拿掉，传回只含档名的字串。在 Windows 系列的作业系统中，路径可以是斜线 (/) 或反斜线 (\)；在 UNIX 系列的作业系统，路径为斜线 (/)。

使用范例

下例中的 $file 变数值为 "index.php"

<?php
$path = "/home/httpd/html/index.php";
$file = basename($path);
?>

参考

dirname()


函式:bcadd()

BC 高精确度函式库

bcadd

将二个高精确度数字相加。

语法: string bcadd(string left operand, string right operand, int [scale]);

传回值: 字串

函式种类: 数学运算

内容说明

此函式将二个高精确度的数字相加，传入二个字串，结果亦以字串传回。scale 是一个可有可无的选项，表示传回值的小数点后所需的位数。

参考

bcsub()


函式:bccomp()

BC 高精确度函式库

bccomp

比较二个高精确度数字。

语法: int bccomp(string left operand, string right operand, int [scale]);

传回值: 整数

函式种类: 数学运算

内容说明

此函式比较二个高精确度的数字。输入二个字串，若二个字串一样大则传回 0；若左边的数字字串 (left operand) 比右边 (right operand) 的大则传回 +1；若左边的数字字串比右边的小则传回 -1。scale 是一个可有可无的选项，表示传回值的小数点后所需的位数。


函式:bcdiv()

BC 高精确度函式库

bcdiv

将二个高精确度数字相除。

语法: string bcdiv(string left operand, string right operand, int [scale]);

传回值: 字串

函式种类: 数学运算

内容说明

此函式将二个高精确度的数字相除，传入二个字串，以左边的数字字串 (left operand) 除以右边的 (right operand) 数字字串。结果亦以字串传回。scale 是一个可有可无的选项，表示传回值的小数点后所需的位数。

参考

bcmul()


函式:bcmod()

BC 高精确度函式库

bcmod

取得高精确度数字的余数。

语法: string bcmod(string left operand, string modulus);

传回值: 字串

函式种类: 数学运算

内容说明

得到 left operand 被 modulus 除后的余数字串。

参考

bcdiv()


函式:bcmul()

BC 高精确度函式库

bcmul

将二个高精确度数字相乘。

语法: string bcmul(string left operand, string right operand, int [scale]);

传回值: 字串

函式种类: 数学运算

内容说明

此函式将二个高精确度的数字相乘，传入二个字串，以左边的数字字串 (left operand) 乘以右边的 (right operand) 数字字串。结果亦以字串传回。scale 是一个可有可无的选项，表示传回值的小数点后所需的位数。

参考

bcdiv()


函式:bcpow()

BC 高精确度函式库

bcpow

求一高精确度数字次方值。

语法: string bcpow(string x, string y, int [scale]);

传回值: 字串

函式种类: 数学运算

内容说明

此函式求一高精确度数字 x 的 y 次方。结果亦以字串传回。scale 是一个可有可无的选项，表示传回值的小数点后所需的位数。

参考

bcsqrt()


函式:bcscale()

BC 高精确度函式库

bcscale

设定程式中所有 BC 函式库的内定小数点位数。

语法: string bcscale(int scale);

传回值: 字串

函式种类: 数学运算

内容说明

设定所有传回值的小数点后所需的位数。之后程式若无特别指定，则依此设定的小数点位数。


函式:bcsqrt()

BC 高精确度函式库

bcsqrt

求一高精确度数字的平方根。

语法: string bcsqrt(string operand, int [scale]);

传回值: 字串

函式种类: 数学运算

内容说明

此函式求一高精确度数字开平方根值。scale 是一个可有可无的选项，表示传回值的小数点后所需的位数。

参考

bcpow()


函式:bcsub()

BC 高精确度函式库

bcsub

将二个高精确度数字相减。

语法: string bcsub(string left operand, string right operand, int [scale]);

传回值: 字串

函式种类: 数学运算

内容说明

此函式将二个高精确度的数字相减，传入二个字串，以左边的 (left operand) 减去右边的 (right operand) 值。scale 是一个可有可无的选项，表示传回值的小数点后所需的位数。

参考

bcadd()


函式:bin2hex()

字串处理函式库

bin2hex

二进位转成十六进位。

语法: string bin2hex(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式让二进位字串转成十六进位字串。

使用范例

补充:
josh@superfork.com (22-Jun-1999) 写了一个函数，可将十六进位转成二进位。

<?
function hex2bin($data) {
$len = strlen($data);
for($i=0;$i<$len;$i+=2) {
$newdata .= pack("C",hexdec(substr($string,$i,2)));
}
return $newdata;
}
?>


函式:BinDec()

数学运算函式库

BinDec

二进位转成十进位。

语法: int bindec(string binary_string);

传回值: 整数

函式种类: 数学运算

内容说明

本函式将二进位数字字串转成十进位的整数。由于 PHP 使用 32 位元有正负号整数计算，能处理的最大十进位数字为 2147483647，也就是二进位数字的 1111111111111111111111111111111 (31 个 1)。

参考

DecBin()


函式:Ceil()

数学运算函式库

Ceil

计算大于指定数的最小整数。

语法: int ceil(float number);

传回值: 整数

函式种类: 数学运算

内容说明

本函式用来计算比浮点参数 number 大的最小整数。

使用范例

本例传回值为 4。

<?php
$nextint=ceil(3.14);
echo $nextint;
?>

参考


函式:chdir()

目录管理函式库

chdir

改变目录。

语法: int chdir(string directory);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来改变目前 PHP 执行的目录到新的 directory 目录中。若无法改变则传回 false，成功则传回 true。


函式:checkdate()

日期与时间函式库

checkdate

验证日期的正确性。

语法: int checkdate(int month, int day, int year);

传回值: 整数

函式种类: 时间日期

内容说明

若日期是有效的则传回 true，若日期有问题，则传回 false。本函式可以用来检查日期是否有效。有效范围如下：

年 为 0 至 32767 年
月 为 1 至 12 月
日 则随着月份及闰年变化

[ 下一页 ]


函式:checkdnsrr()

网路函式库

checkdnsrr

检查指定网址的 DNS 记录。

语法: int checkdnsrr(string host, string [type]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来检查 DNS 的栏位纪录。指定的参数 host 可以是网路位址 (IP Address)，也可以用机器名称 (Domain Name)。参数 type 可以省略，内定值为 MX。而参数 type 的值可为以下的其中之一：A、MX、NS、SOA、PTR、CNAME 或 ANY。若找到了指定网址的 DNS 栏位，传回 true；若未找到指定的 DNS 栏位或是有错误均会传回 false。

参考


函式:chgrp()

档案系统函式库

chgrp

改变档案所属的群组。

语法: int chgrp(string filename, mixed group);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来改变档案所属的群组，只有系统管理员权限可以任意改变档案所属群组，其余的使用者都只能改变本身拥有的档案。成功传回 true，失败传回 false；在 Windows 系列作业系统中，本函式什么也不做就传回 true。

参考


函式:chmod()

档案系统函式库

chmod

改变档案的属性。

语法: int chmod(string filename, int mode);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来改变档案的属性。成功则传回 true、失败传回 false。在 mode 值中，系统不会自动将它加入 0 以获得正确的八进位演算，若要正确的使用，可以用下例第二行的方式。

使用范例

下二行都是将档案属性设为 rwxr-xr-x，但以第二行较好。

<?
chmod("/mydir/myfile", 755 ); // mode 为十进位，可能有潜在错误
chmod("/mydir/myfile", 0755 ); // mode 为八进位，确定的属性值
?>

参考


函式:Chop()

字串处理函式库

Chop

去除连续空白。

语法: string chop(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字串的连续空白清除。

使用范例

<?
$trimmed = Chop($line);
?>

参考

trim()


函式:chown()

档案系统函式库

chown

改变档案的拥有者。

语法: int chown(string filename, mixed user);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来改变档案的拥有人，只有系统管理员权限可以任意改变档案所属群组，其余的使用者都只能改变本身拥有的档案。成功传回 true，失败传回 false；在 Windows 系列作业系统中，本函式什么也不做就传回 true。

参考

chmod()


函式:Chr()

字串处理函式库

Chr

传回序数值的字元。

语法: string chr(int ascii);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字元的序数转成 ASCII 的字元。本函式和 ord() 成对照。

使用范例

<?
$str .= chr(27);
$str = sprintf("字串的结束字元是: %c", 27);
?>

参考


函式:chunk_split()

字串处理函式库

chunk_split

将字串分成小段。

语法: string chunk_split(string string, int [chunklen] , string [end]);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字元变成小段供其它函式使用。例如，base64_encode。内定是参数 chunklen (76 个字元) 每隔 76 个字元插入 end ("\r\n")。传回新字串而不更动原字串。

使用范例

将字串 $data 格式化成 MIME BASE64 格式

<?
$new_string = chunk_split(base64_encode($data));
?>

参考

ereg_replace()


函式:clearstatcache()

档案系统函式库

clearstatcache

清除档案状态快取。

语法: void clearstatcache(void);

传回值: 无

函式种类: 档案存取

内容说明

对作业系统而言，使用 stat() 或 lstat() 二个函式是很耗资源的，尤其是当每次都要重新呼叫 stat() 及 lstat() 二个函式时，更是不经济的方式。因此为节省资源，PHP 系统会将档案状态放在快取记忆体中，以便随时使用。而本函式就是提供清除快取记忆体中档案资讯的函式。受本函式影响的函式有 stat()、lstat()、file_exists()、is_writeable()、is_readable()、is_executable()、is_file()、is_dir()、is_link()、filectime()、fileatime()、filemtime()、fileinode()、filegroup()、fileowner()、filesize()、filetype() 及 fileperms() 等十八个。

参考

stat() lstat() file_exists() is_writeable() is_readable() is_executable() is_file() is_dir() is_link() filectime() fileatime() filemtime() fileinode() filegroup() fileowner() filesize() filetype() fileperms()


函式:closedir()

目录管理函式库

closedir

关闭目录 handle。

语法: void closedir(int dir_handle);

传回值: 无

函式种类: 档案存取

内容说明

本函式用来关闭目录资料流的 dir_handle。这个 dir_handle 参数所操作的目录必须要 opendir() 开启的方可使用。


函式:closelog()

网路函式库

closelog

关闭系统纪录。

语法: int closelog(void);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式用来关闭已打开的系统纪录。本函式无传入参数，亦不是必须要的函式，PHP 剧本程式在执行完成后就会自动关闭开启的资源。

参考


函式:connection_aborted()

杂项函式库

connection_aborted

若连结中断则传回 true。

语法: int connection_aborted(void);

传回值: 整数

函式种类: 网路系统

内容说明

若与客户端 (Client) 失去连结则传回 true 值。本函式不须输入参数。


函式:connection_status()

杂项函式库

connection_status

取得连线状态。

语法: int connection_status(void);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可传回连线状态。使用时不须输入参数。


函式:connection_timeout()

杂项函式库

connection_timeout

若超过 PHP 程式执行时间则传回 true。

语法: int connection_timeout(void);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若 PHP 程式 (script) 执行时间超过设定值则传回 true。使用时不须输入参数。


函式:convert_cyr_string()

字串处理函式库

convert_cyr_string

转换古斯拉夫字串成其它字串。

语法: string convert_cyr_string(string str, string from, string to);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将古斯拉夫字串转成其它的字串。from 及 to 二个参数是字元，其代表意义如下：

  • k - koi8-r
  • w - windows-1251
  • i - iso8859-5
  • a - x-cp866
  • d - x-cp866
  • m - x-mac-cyrillic


函式:copy()

档案系统函式库

copy

复制档案。

语法: int copy(string source, string dest);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来复制档案。成功则传回 true、失败传回 false。

使用范例

本例复制档案，失败时显示复制失败的讯息。

<?
if (!copy($file, $file.'.bak')) {
print("复制档案 $file 失败...<br>\n");
}
?>

参考

rename()


函式:Cos()

数学运算函式库

Cos

余弦计算。

语法: float cos(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式计算参数 arg 的余弦值 (cosine)。

参考


函式:count()

阵列处理函式库

count

计算变数或阵列中的元素个数。

语法: int count(mixed var);

传回值: 整数

函式种类: 资料处理

内容说明

这个函式用来计算阵列的元素个数 (亦可将变数代入，只不过传回的整数将是 1)。变数还没有设定时，传回值为 0。变数若不是阵列，传回值为 1。

参考


函式:crypt()

字串处理函式库

crypt

将字串用 DES 编码加密。

语法: string crypt(string str, string [salt]);

传回值: 字串

函式种类: 编码处理

内容说明

本函式将字串用 UNIX 的标准加密 DES 模组加密。这是单向的加密函式，无法解密。欲比对字串，将已加密的字串的头二个字元放在 salt 的参数中，再比对加密后的字串。

更详细的资料请参考 UNIX Manual (man) 中的 crypt。

在一些较新的 UNIX 版本中，除了 DES 之外还提供了其它的加密模组，如 MD5。甚至有些系统还用 MD5 取代 DES。在 salt 参数还有一些变化，端看传给 salt 参数的字串长度而定：

  • CRYPT_STD_DES - 标准的 DES 编码，输入 2 字元的 salt。
  • CRYPT_EXT_DES - 延伸的 DES 编码，输入 9 字元的 salt。
  • CRYPT_MD5 - MD5 编码，输入 12 字元加上 $1$ 的 salt。
  • CRYPT_BLOWFISH - 延伸的 DES 编码，输入 16 字元加上 $2$ 的 salt。

此外，若不使用 salt 参数，则程式会自动产生。


函式:current()

阵列处理函式库

current

传回阵列中目前的元素。

语法: mixed current(array array);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

说明: 每一个阵列变数都有一个内部指标，指到它的每一个元素。此外，为了交互参考，阵列有份所有元素的双向链结表。阵列的内部指标指到原先插入的元素上，直到程式执行到有更动阵列指标的函式。函式 current() 简单地传回阵列元素中目前指到的阵列内部指标。它不会改变指标的值，若阵列指标指到内部指标表外，则传回 false 的值。

注意: 若阵列中包含空的元素 (0 或者 "" 空字串)，则本函式会传回 false 值。要是目前元素是个零值的空元素或者是超出阵列指标，结果当然是未定的 false 值。遇到这种情形，可以使用 each() 函式会更适合。

参考


函式:date()

日期与时间函式库

date

将伺服器的时间格式化。

语法: string date(string format, int [timestamp]);

传回值: 字串

函式种类: 时间日期

内容说明

传回值的字串依设定的格式来决定。若有传入时间戳记值，则将时间戳记格式化传回；若无传入时间戳记值，则将目前伺服器的时间格式化传回。要将日期转为其它的语系格式，应使用setlocale() 及 strftime() 二个函式。字串格式化的选项如下：

  • a - "am" 或是 "pm"
  • A - "AM" 或是 "PM"
  • d - 几日，二位数字，若不足二位则前面补零; 如: "01" 至 "31"
  • D - 星期几，三个英文字母; 如: "Fri"
  • F - 月份，英文全名; 如: "January"
  • h - 12 小时制的小时; 如: "01" 至 "12"
  • H - 24 小时制的小时; 如: "00" 至 "23"
  • g - 12 小时制的小时，不足二位不补零; 如: "1" 至 12"
  • G - 24 小时制的小时，不足二位不补零; 如: "0" 至 "23"
  • i - 分钟; 如: "00" 至 "59"
  • j - 几日，二位数字，若不足二位不补零; 如: "1" 至 "31"
  • l - 星期几，英文全名; 如: "Friday"
  • m - 月份，二位数字，若不足二位则在前面补零; 如: "01" 至 "12"
  • n - 月份，二位数字，若不足二位则不补零; 如: "1" 至 "12"
  • M - 月份，三个英文字母; 如: "Jan"
  • s - 秒; 如: "00" 至 "59"
  • S - 字尾加英文序数，二个英文字母; 如: "th"，"nd"
  • t - 指定月份的天数; 如: "28" 至 "31"
  • U - 总秒数
  • w - 数字型的星期几，如: "0" (星期日) 至 "6" (星期六)
  • Y - 年，四位数字; 如: "1999"
  • y - 年，二位数字; 如: "99"
  • z - 一年中的第几天; 如: "0" 至 "365"

其它不在上列的字元则直接列出该字元。

使用范例

范例一:
<?
print(date( "l dS of F Y h:i:s A" ));
print("July 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000)));
?>

范例二:
<?
$tomorrow = mktime(0,0,0,date("m") ,date("d")+1,date("Y"));
$lastmonth = mktime(0,0,0,date("m")-1,date("d"), date("Y"));
$nextyear = mktime(0,0,0,date("m"), date("d", date("Y")+1);
?>

参考


函式:dba_close()

DBA 函式库

dba_close

关闭资料库。

语法: void dba_close(int handle);

传回值: 无

函式种类: 资料库功能

内容说明

本函式用来将已开启的资料库关闭。参数 handle 为开启资料库时所传回来的代号 ID。

参考


函式:dba_delete()

DBA 函式库

dba_delete

删除指定资料。

语法: int dba_delete(string key, int handle);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式将删除指定的资料。参数 key 为欲删除的键值 (key)。参数 handle 为开启资料库时所传回来的代号 ID。删除成功则传回 true 值。

参考


函式:dba_exists()

DBA 函式库

dba_exists

检查键是否存在。

语法: boolean dba_exists(string key, int handle);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来检查指定的键是否存在。参数 key 为待检查的键值 (key)。参数 handle 为开启资料库时所传回来的代号 ID。若键存在则传回 true 值。

参考


函式:dba_fetch()

DBA 函式库

dba_fetch

取回指定资料。

语法: string dba_fetch(string key, int handle);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式取得指定的资料。参数 key 为欲取出资料的键值 (key)。参数 handle 为开启资料库时所传回来的代号 ID。传回值即为资料字串，若取出失败则传回 false。

参考


函式:dba_firstkey()

DBA 函式库

dba_firstkey

取回首笔键值。

语法: string dba_firstkey(int handle);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式取得资料库的第一笔键值 (key)。参数 handle 为开启资料库时所传回来的代号 ID。传回值即为键值，若取出失败则传回 false。

参考

dba_nextkey()


函式:dba_insert()

DBA 函式库

dba_insert

加入资料。

语法: boolean dba_insert(string key, string value, int handle);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式将加入资料至资料库中。参数 key 为键值 (key) 字串。参数 value 为欲加入的资料内容。参数 handle 为开启资料库时所传回来的代号 ID。成功则传回 true 值。

参考


函式:dba_nextkey()

DBA 函式库

dba_nextkey

取回下笔键值。

语法: string dba_nextkey(int handle);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式取得资料库的下一笔键值 (key)。参数 handle 为开启资料库时所传回来的代号 ID。传回值即为键值，若取出失败则传回 false。

参考

dba_firstkey()


函式:dba_open()

DBA 函式库

dba_open

开启资料库连结。

语法: int dba_open(string path, string mode, string handler);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启指定的资料库。参数 path 为资料库的路径及资料库名称，例如 "/tmp/mysite/wahaha.db"。参数 mode 值如下表

属性 | 说明
r | 开启唯读既有资料库
w | 开启可读写既有资料库
c | 开启可读写资料库，若不存在则建立
n | 删去现有资料库，若不存在则建立，之后可读写

参数 handler 为开启资料库的种类，有 dbm、ndbm、gdbm、db2 或 cdb 等种类。传回值为资料库的代号 ID，若失败则传回 false。本函式和 dba_popen() 不同的地方在于本函式开启的资料库在 PHP 程式结束后即关闭，dba_popen() 会保持与资料库连线，待下次再执行，则不必再打开与资料库的连结。

参考


函式:dba_optimize()

DBA 函式库

dba_optimize

最佳化资料库。

语法: boolean dba_optimize(int handle);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式将资料库最佳化。参数 handle 为开启资料库时所传回来的代号 ID。最佳化成功则传回 true 值，反之则传回 false。

参考

dba_sync()


函式:dba_popen()

DBA 函式库

dba_popen

开启并保持资料库连结。

语法: int dba_popen(string path, string mode, string handler);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启指定的资料库，并保持与资料库连线的状态。参数 path 为资料库的路径及资料库名称，例如 "/tmp/mysite/wahaha.db"。参数 mode 值如下表

属性 | 说明
r | 开启唯读既有资料库
w | 开启可读写既有资料库
c | 开启可读写资料库，若不存在则建立
n | 删去现有资料库，若不存在则建立，之后可读写

参数 handler 为开启资料库的种类，有 dbm、ndbm、gdbm、db2 或 cdb 等种类。传回值为资料库的代号 ID，若失败则传回 false。

参考


函式:dba_replace()

DBA 函式库

dba_replace

更动或加入资料。

语法: boolean dba_replace(string key, string value, int handle);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式更动资料库中的资料，若资料不存在则加入。参数 key 为键值 (key) 字串。参数 value 为欲更动的资料内容。参数 handle 为开启资料库时所传回来的代号 ID。成功则传回 true 值。

参考


函式:dba_sync()

DBA 函式库

dba_sync

资料库同步化。

语法: boolean dba_sync(int handle);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式使系统在更新资料库时，能同时写入实体的资料库储存装置 (如硬碟) 之中。参数 handle 为开启资料库时所传回来的代号 ID。同步成功则传回 true 值，反之则传回 false。

参考

dba_optimize()


函式:dbase_add_record()

dBase 格式资料表函式库

dbase_add_record

加入资料到 dBase 资料表。

语法: boolean dbase_add_record(int dbase_identifier, array record);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式将新增资料到 dBase 资料表中。参数 dbase_identifier 为资料表的 ID 值。参数 record 为欲新增的资料阵列，其中的各元素依序对映到资料表的各栏位。


函式:dbase_close()

dBase 格式资料表函式库

dbase_close

关闭 dBase 资料表。

语法: boolean dbase_close(int dbase_identifier);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来关闭现有的 dBase 资料表。参数 dbase_identifier 为资料表的 ID 值。


函式:dbase_create()

dBase 格式资料表函式库

dbase_create

建立 dBase 资料表。

语法: int dbase_create(string filename, array fields);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来建立新的 dBase 资料表。参数 filename 为资料表的名字及路径。参数 fields 为阵列，其中定义各栏位的资讯，包含栏位名称、栏位形态、及栏位长度等。下表为 fields 的值

形态 | 说明
L | 布林值 (Boolean)。不需定义资料长度。
M | 备忘资料 (Memo)。PHP 目前不支援本形态。
D | 日期 (Date)。储存格式为 YYYYMMDD。
N | 数字形态 (Number)。需定义小数前后的位数。
C | 字串 (String)。需定义字串长度。

若无法建立则传回 false，成功则传回资料表的 ID。

使用范例

下例为建立资料表的例子

<?php
$dbname = "/mypath/user.dbf";
// 定义资料表栏位
$user = array(
array("name", "C", 10),
array("age", "N", 3, 0),
array("address", "C", 256),
array("birthday", "D"),
array("sex", "L")
);
if (!dbase_create($dbname, $user))
echo "无法建立使用者资料表";
?>


函式:dbase_delete_record()

dBase 格式资料表函式库

dbase_delete_record

删除 dBase 资料表的资料。

语法: boolean dbase_delete_record(int dbase_identifier, int record);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式将删除 dBase 资料表中的资料，实际上本函式只是将资料加入删除的标记，需使用 4.9.4 dbase_pack() 将资料真正清除。参数 dbase_identifier 为资料表的 ID 值。参数 record 为欲删除的资料列列号，列号从 1 开始计算。

参考

dbase_pack()


函式:dbase_get_record()

dBase 格式资料表函式库

dbase_get_record

取得 dBase 资料表的资料。

语法: array dbase_get_record(int dbase_identifier, int record);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式将取出 dBase 资料表中的一列资料。参数 dbase_identifier 为资料表的 ID 值。参数 record 为欲读取的资料列列号，列号从 1 开始计算。传回值为阵列资料，各栏位 PHP 会自动转成应有的资料形态，dBase 的 Date 形态将转成 PHP 的字串形态。


函式:dbase_numfields()

dBase 格式资料表函式库

dbase_numfields

取得 dBase 资料表的栏位数。

语法: int dbase_numfields(int dbase_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式将计算出 dBase 资料表的资料栏位数。参数 dbase_identifier 为资料表的 ID 值。栏位数从 0 开始计算，意即 0 表示只有一栏。

使用范例

<?php
$rec = dbase_get_record($db, $recno);
$nf = dbase_numfields($db);
for ($i=0; $i < $nf; $i++) {
echo $rec[$i]."<br>\n";
}
?>


函式:dbase_numrecords()

dBase 格式资料表函式库

dbase_numrecords

取得 dBase 资料表的列数。

语法: int dbase_numrecords(int dbase_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式将计算出 dBase 资料表的资料列数。参数 dbase_identifier 为资料表的 ID 值。资料列数从 1 开始计算。


函式:dbase_open()

dBase 格式资料表函式库

dbase_open

开启 dBase 资料表。

语法: int dbase_open(string filename, int flags);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启现有的 dBase 资料表。参数 filename 为资料表的名字及路径。参数 flags 为开档的属性，0 表唯读、1 表唯写、2 表可读写。若无法开启则传回 false，成功则传回资料表的 ID 值。


函式:dbase_pack()

dBase 格式资料表函式库

dbase_pack

清理 dBase 资料表。

语法: boolean dbase_pack(int dbase_identifier);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式将清除现有的 dBase 资料表中标记为清除的资料列，意即将 dbase_delete_record() 所标记的资料删除。参数 dbase_identifier 为资料表的 ID 值。

参考

dbase_get_record()


函式:dblist()

dbm 类资料库函式库

dblist

取得 DBM 的资讯。

语法: string dblist(void);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式取得 DBM 资料库函式馆的相关资讯。本函式不需输入参数，传回值为资讯字串。


函式:dbmclose()

dbm 类资料库函式库

dbmclose

关闭 DBM 资料库。

语法: boolean dbmclose(int handle);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来将已开启的资料库关闭。参数 handle 为开启资料库时所传回来的代号 ID。


函式:dbmdelete()

dbm 类资料库函式库

dbmdelete

删除指定资料。

语法: boolean dbmdelete(int handle, string key);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式将删除指定的资料。参数 handle 为开启资料库时所传回来的代号 ID。参数 key 为欲删除的键值 (key)。若该键值不存在无法删除则传回 false。


函式:dbmexists()

dbm 类资料库函式库

dbmexists

检查键是否存在。

语法: boolean dbmexists(int handle, string key);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来检查指定的键是否存在。参数 handle 为开启资料库时所传回来的代号 ID。参数 key 为待检查的键值 (key)。若键存在则传回 true 值。


函式:dbmfetch()

dbm 类资料库函式库

dbmfetch

取回指定资料。

语法: string dbmfetch(int handle, string key);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式取得指定的资料。参数 handle 为开启资料库时所传回来的代号 ID。参数 key 为欲取出资料的键值 (key)。传回值即为资料字串，若取出失败则传回 false。


函式:dbmfirstkey()

dbm 类资料库函式库

dbmfirstkey

取回首笔键名。

语法: string dbmfirstkey(int handle);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式取得资料库的第一笔键名 (key)。参数 handle 为开启资料库时所传回来的代号 ID。传回值即为键名，若取出失败则传回 false。值得注意的是资料库的资料没有任何排序的情形，无法预期传回的资料是依何方式排序后的第一笔资料。若需要特定顺序的第一笔资料，则需读回全部的资料到阵列中，再使用 PHP 的排序函式排序后方可取得所需值。


函式:dbminsert()

dbm 类资料库函式库

dbminsert

加入资料。

语法: int dbminsert(int handle, string key, string value);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式将加入资料至资料库中。参数 handle 为开启资料库时所传回来的代号 ID。参数 key 为键值 (key) 字串。参数 value 为欲加入的资料内容。成功则传回 0；传回值 -1 表示该资料库档案为唯读的状态；传回值 1 则表示该键已经存在，可用 dbmreplace() 取代。


函式:dbmnextkey()

dbm 类资料库函式库

dbmnextkey

取回下笔键值。

语法: string dbmnextkey(int handle, string key);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式取得资料库的下一笔键值 (key)。参数 handle 为开启资料库时所传回来的代号 ID。传回值即为键值。

使用范例

<?php
// 之前已经开启 DBM 资料库。
$key = dbmfirstkey($dbm_id);
while ($key) {
echo "$key = " . dbmfetch($dbm_id, $key) . "\n";
$key = dbmnextkey($dbm_id, $key);
}
?>


函式:dbmopen()

dbm 类资料库函式库

dbmopen

开启 DBM 资料库连结。

语法: int dbmopen(string filename, string flags);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启指定的资料库。参数 path 为资料库的路径加上资料库名称。参数 mode 值如下表

属性 | 说明
r | 开启唯读既有资料库
w | 开启可读写既有资料库
c | 开启可读写资料库，若不存在则建立
n | 删去现有资料库，若不存在则建立，之后可读写

传回值为资料库的代号 ID，若失败则传回 false。


函式:dbmreplace()

dbm 类资料库函式库

dbmreplace

更动或加入资料。

语法: boolean dbmreplace(int handle, string key, string value);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式更动资料库中的资料，若资料不存在则加入。参数 handle 为开启资料库时所传回来的代号 ID。参数 key 为键值 (key) 字串。参数 value 为欲更动的资料内容。成功则传回 true 值。


函式:debugger_off()

网路函式库

debugger_off

关闭内建的 PHP 除错器。

语法: int debugger_off(void);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式用来关闭远端的机器 PHP 除错功能。本函式无传入参数。

[ 上一页 ]


函式:debugger_on()

网路函式库

debugger_on

使用内建的 PHP 除错器。

语法: int debugger_on(string address);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式用来对远端的机器 PHP 除错。除错使用的埠 (Port) 在 php.ini 中的 debugger.port 栏位设定，内定埠是 7869。

使用范例

<?php
debugger_on("123.123.123.123");
?>


函式:DecBin()

数学运算函式库

DecBin

十进位转二进位。

语法: string decbin(int number);

传回值: 字串

函式种类: 数学运算

内容说明

本函式将十进位数字转成二进位字串。由于 PHP 使用 32 位元有正负号整数计算，能处理的最大十进位数字为 2147483647，也就是二进位数字的 1111111111111111111111111111111 (31 个 1)。

参考

BinDec()


函式:DecHex()

数学运算函式库

DecHex

十进位转十六进位。

语法: string dechex(int number);

传回值: 字串

函式种类: 数学运算

内容说明

本函式将十进位数字转成十六进位字串。由于 PHP 使用 32 位元有正负号整数计算，能处理的最大十进位数字为 2147483647，也就是十六进位数字 7fffffff。

参考

HexDec()


函式:DecOct()

数学运算函式库

DecOct

十进位转八进位。

语法: string decoct(int number);

传回值: 字串

函式种类: 数学运算

内容说明

本函式将十进位数字转成八进位字串。由于 PHP 使用 32 位元有正负号整数计算，能处理的最大十进位数字为 2147483647，也就是八进位数字 17777777777。

参考

OctDec()


函式:delete()

档案系统函式库

delete

无用的项目。

语法: void delete(string file);

传回值: 无

函式种类: 档案存取

内容说明

本函式为无用的项目。要删除档案用 unlink()、要删去变数用 unset()。

参考


函式:die()

杂项函式库

die

输出讯息并中断 PHP 程式。

语法: void die(string message);

传回值: 无

函式种类: PHP 系统功能

内容说明

本函式将送出字串到浏览器并中断 PHP 程式 (Script)。参数 message 为欲送出的字串。

使用范例

下例中，若无法开启 /etc/shadow 时，传给浏览器抱歉，无法开启: /etc/shadow。

<?php
$filename = "/etc/shadow";
$file = @fopen($filename, 'r')
or die("抱歉，无法?/font>}启: $filename");
echo "本行不会执行";
?>


函式:dir()

目录管理函式库

dir

目录类别物件。

语法: new dir(string directory);

传回值: 物件

函式种类: 档案存取

内容说明

这是一个类似物件导向的类别物件，用来读取目录。当目录参数 directory 开启之后，有二个属性可用：handle 属性就像其它非物件的函式所用的 readdir()、rewinddir() 及 closedir()；path 属性则设定开启目录后的路径参数。本物件有三个方法 (method)：read、rewind 与 close。

使用范例

<?
$d = dir("/etc");
echo "Handle: ".$d->handle."<br>\n";
echo "Path: ".$d->path."<br>\n";
while($entry=$d->read()) {
echo $entry."<br>\n";
}
$d->close();
?>


函式:dirname()

档案系统函式库

dirname

取得路径中的目录名。

语法: string dirname(string path);

传回值: 字串

函式种类: 档案存取

内容说明

本函式传回 path 中的目录名称。在 Win32 系统中，用斜线 (/) 或者反斜线 (\) 都可以；但是其它的作业系统的路径都是 (/)。

使用范例

本例传回字串 $file 为 "/etc"。

<?
$path = "/etc/hostname";
$file = dirname($path);
?>

参考

basename()


函式:diskfreespace()

档案系统函式库

diskfreespace

取得目录所在的剩余可用空间。

语法: float diskfreespace(string directory);

传回值: 浮点数

函式种类: 档案存取

内容说明

本函式用来取得目录所在储存装置的剩余空间，单位为位元组 (byte)。

使用范例

本例可以知道根目录的剩余空间。

<?
$df = diskfreespace("/");
?>


函式:dl()

动态连结函式库

dl

载入 PHP 扩充模组。

语法: int dl(string library);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式可动态的载入 PHP 所需的外部扩充模组 library。


函式:doubleval()

变数处理函式库

doubleval

变数转成倍浮点数型态。

语法: double doubleval(mixed var);

传回值: 倍浮点数

函式种类: PHP 系统功能

内容说明

本函式可将变数转成倍浮点数型态。转换的变数 var 可以为阵列或物件之外的任何型态变数。

参考


函式:each()

阵列处理函式库

each

传回阵列中下一个元素的索引及值。

语法: array each(array array);

传回值: 阵列

函式种类: 资料处理

内容说明

传回阵列为目前阵列指标的 索引/值 对。传回的阵列有四个元素，依序为 0, 1, 索引, 及值。前述的 0 与 索引 为阵列的索引，1 与 值则为阵列元素的值。

使用范例

范例一:
<?
$foo = array( "bob", "fred", "jussi", "jouni" );
$bar = each( $foo );
?>
上面的例子，传回阵列 $bar 的 索引/值 为
0 => 0
1 => 'bob'
key => 0
value => 'bob'

范例二:
<?
$foo = array( "Robert" => "Bob", "Seppo" => "Sepi" );
$bar = each( $foo );
?>
这个的例子，传回阵列 $bar 的 索引/值 为
0 => 'Robert'
1 => 'Bob'
key => 'Robert'
value => 'Bob'

范例三:
each() 函式最典型的例子是拿来与 list() 函式合用，如下例的 $HTTP_POST_VARS 变数。
<?
echo "POST 所送出的值为:<br>";
while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {
echo "$key => $val<br>";
}
?>

参考


函式:easter_date()

日期与时间函式库

easter_date

计算复活节日期。

语法: int easter_date(int [year]);

传回值: 整数

函式种类: 时间日期

内容说明

输入某一年份，则以 UNIX 时间戳记的格式传回该年的复活节日期，若没有输入年份，则计算当年的日期。值得注意的是输入的年份必需在西元 1970 至 2037 年之间，否则无法计算。

使用范例

<?
echo date("M-d-Y", easter_date(1999));
echo date("M-d-Y", easter_date(2000));
echo date("M-d-Y", easter_date(2001));
?>

传回结果为
Apr-04-1999
Apr-23-2000
Apr-15-2001


函式:easter_days()

日期与时间函式库

easter_days

计算复活节与三月廿一日之间日期数。

语法: int easter_days(int [year]);

传回值: 整数

函式种类: 时间日期

内容说明

输入某一年份，则以计算该年复活节与三月二十一日之间的日期数，若没有输入年份，则以当年计算。这个函式可以用来替代 easter_date() 1970-2037 年外范围无法计算的问题。

使用范例

<?
echo easter_days(1999);
echo easter_days(1492);
echo easter_days(1913);
?>

传回结果为:
14 (4/4)
32 (4/22)
2 (3/23)

参考

easter_date()


函式:echo()

字串处理函式库

echo

输出字串。

语法: echo "string arg1, string [argn]...";

传回值: 无

函式种类: PHP 系统功能

内容说明

本函式将字串输出。由于它不是真正的函式，因此也没有传回值。

使用范例

<?php
echo "Hello World";
?>

参考


函式:empty()

变数处理函式库

empty

判断变数是否已设定。

语法: int empty(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式用来测试变数是否已经设定。若变数已存在、非空字串或者非零，则传回 false 值；反之传回 true。值得注意的是 aulbach@unter.franken.de 指出 (27-May-1999) 若使用 empty($myvar) != !isset($myvar) 会造成 PHP 处理的问题。

参考


函式:end()

阵列处理函式库

end

将阵列的内部指标指到最后的元素。

语法: end(array array);

传回值: 无

函式种类: 资料处理

内容说明

本函式会改变阵列的内部指标，它将指标指到最后一个元素上。

参考


函式:ereg()

常规表示法函式库

ereg

字串比对剖析。

语法: int ereg(string pattern, string string, array [regs]);

传回值: 整数/阵列

函式种类: 资料处理

内容说明

本函式以 pattern 的规则来剖析比对字串 string。比对结果传回的值放在阵列参数 regs 之中，regs[0] 内容就是原字串 string、regs[1] 为第一个合乎规则的字串、regs[2] 就是第二个合乎规则的字串，余类推。若省略参数 regs，则只是单纯地比对，找到则传回值为 true。

使用范例

这个例子是 markus@dnet.it 在 14-Jun-1999 所提出的，可对使用者输入的 E-Mail 作简单的检查，检查使用者的 E-Mail 字串是否有 @ 字元，在 @ 字元前有英文字母或数字，在之后有数节字串，最后的小数点后只能有二个或三个英文字母。super@mail.wilson.gs 就可以通过检查，super@mail.wilson 就不能通过检查。

<?php
if (eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {
echo "您的 E-Mail 通过初步检查";
}
?>

参考

ereg_replace() eregi() eregi_replace()

[ 下一页 ]


函式:ereg_replace()

常规表示法函式库

ereg_replace

字串比对剖析并取代。

语法: string ereg_replace(string pattern, string replacement, string string);

传回值: 字串

函式种类: 资料处理

内容说明

本函式以 pattern 的规则来剖析比对字串 string，欲取而代之的字串为参数 replacement。传回值为字串型态，为取代后的字串结果。

使用范例

ken@freebsdrocks.com 在 16-Mar-1999 提出的例子。

<?php
$text = 'This is a {1} day, not {2} and {3}.';
$daytype = array( 1 => 'fine',
2 => 'overcast',
3 => 'rainy' );
while (ereg ('{([0-9]+)}', $text, $regs)) {
$found = $regs[1];
$text = ereg_replace("\{".$found."\}", $daytype[$found], $text);
}
echo "$text\n";
// This is a fine day, not overcast and rainy.
?>

ken@freebsdrocks.com 并同时提出具有相同功能的perl 程式范例如下：

$text = 'This is a {1} day, not {2} and {3}.';
%daytype = ( 1 => 'fine',
2 => 'overcast',
3 => 'rainy' );
$text =~ s/{(\d+)}/$daytype{$1}/eg;
print "$text\n";

参考


函式:eregi()

常规表示法函式库

eregi

字串比对剖析，与大小写无关。

语法: int eregi(string pattern, string string, array [regs]);

传回值: 整数/阵列

函式种类: 资料处理

内容说明

本函式和 ereg() 类似，用法也相同。不同之处在于 ereg() 有区分大小写，本函式与大小写无关。

参考


函式:eregi_replace()

常规表示法函式库

eregi_replace

字串比对剖析并取代，与大小写无关。

语法: string eregi_replace(string pattern, string replacement, string string);

传回值: 字串

函式种类: 资料处理

内容说明

本函式和 ereg_replace() 类似，用法也相同。不同之处在于 ereg_replace() 有区分大小写，本函式与大小写无关。

参考


函式:error_log()

PHP 选项及相关资讯函式库

error_log

送出一个错误讯息。

语法: int error_log(string message, int message_type, string [destination], string [extra_headers]);

传回值: 整数

函式种类: PHP 系统功能

内容说明

此函式会送出错误讯息到 Web 伺服器的错误 log 档，TCP Port，或到指定档案。第一个参数 message 即为要送出的错误讯息。第二个参数 message_type 为整数值：0 表示送到作业系统的 log (UNIX 在 syslog、Windows NT 记录到事件记录)；1 则使用 PHP 的 Mail() 函式，送讯息到某 E-Mail 处，第四个参数 extra_headers 亦会用到；2 则将错误讯息送到 TCP 埠，此时第三个参数 destination 表示目的地 IP 及 Port；3 则将讯息存到档案 destination 中。

使用范例

本例为登入 Oracle 资料库出现问题的处理。

<?php
if (!Ora_Logon($username, $password)) {
error_log("Oracle 资料库不可用!", 0);
}
if (!($foo = allocate_new_foo()) {
error_log("出现大麻烦了!", 1, "webmaster@www.mydomain.com.tw");
}
error_log("搞砸了!", 2, "127.0.0.1:7000");
error_log("搞砸了!", 2, "loghost");
error_log("搞砸了!", 3, "/var/tmp/my-errors.log");
?>


函式:error_reporting()

PHP 选项及相关资讯函式库

error_reporting

设定错误讯息回报的等级。

语法: int error_reporting(int [level]);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式用来设定错误讯息回报的等级，参数 level 是一个整数的位元遮罩 (bitmask)，见下表。

遮罩值 | 表示名称
1 | E_ERROR
2 | E_WARNING
4 | E_PARSE
8 | E_NOTICE
16 | E_CORE_ERROR
32 | E_CORE_WARNING

  • E_NOTICE 表示一般情形不记录，只有程式有错误情形时才用到，例如企图存取一个不存在的变数，或是呼叫 stat() 函式检视不存在的档案。
  • E_WARNING 通常都会显示出来，但不会中断程式的执行。这对除错很有效。例如：用有问题的常规表示法呼叫 ereg()。
  • E_ERROR 通常会显示出来，亦会中断程式执行。意即用这个遮罩无法追查到记忆体配置或其它的错误。
  • E_PARSE 从语法中剖析错误。
  • E_CORE_ERROR 类似 E_ERROR，但不包括 PHP 核心造成的错误。
  • E_CORE_WARNING 类似 E_WARNING，但不包括 PHP 核心错误警告。


函式:escapeshellcmd()

程式执行功能函式库

escapeshellcmd

除去字串中的特殊符号。

语法: string escapeshellcmd(string command);

传回值: 字串

函式种类: 作业系统与环境

内容说明

本函式除去了字串中的特殊符号，可以防止使用者耍花招来破解该伺服器系统。可以用本函式搭配 exec() 或是 system() 二个函式，酱子可以减少网路上的使用者恶意的破坏的机会。

使用范例

<?php
system(EscapeShellCmd($cmdline));
?>


函式:eval()

杂项函式库

eval

将值代入字串之中。

语法: void eval(string code_str);

传回值: 无

函式种类: 资料处理

内容说明

本函式可将字串之中的变数值代入，通常用在处理资料库的资料上。参数 code_str 为欲处理的字串。值得注意的是待处理的字串要符合 PHP 的字串格式，同时在结尾处要有分号。使用本函式处理后的字串会沿续到 PHP 程式结束。

使用范例

<?php
$string = '杯子';
$name = '咖啡';
$str = '这个 $string 中装有 $name.<br>';
echo $str;
eval( "\$str = \"$str\";" );
echo $str;
?>

本例的传回值为

这个 $string 中装有 $name.
这个 杯子 中装有 咖啡.


函式:exec()

程式执行功能函式库

exec

执行外部程式。

语法: string exec(string command, string [array], int [return_var]);

传回值: 字串

函式种类: 作业系统与环境

内容说明

本函式执行输入 command 的外部程式或外部指令。它的传回字串只是外部程式执行后传回的最后一行；若需要完整的传回字串，可以使用 PassThru() 这个函式。

要是参数 array 存在，command 会将 array 加到参数中执行，若不欲 array 被处理，可以在执行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二个参数都存在，则执行 command 之后的状态会填入 return_var 中。

值得注意的是若需要处理使用者输入的资料，而又要防止使用者耍花招破解系统，则可以使用 EscapeShellCmd()。

参考


函式:exit()

杂项函式库

exit

结束 PHP 程式。

语法: void exit(void);

传回值: 无

函式种类: PHP 系统功能

内容说明

本函式直接结束 PHP 程式 (Script)。不需输入参数，亦无传回值。


函式:Exp()

数学运算函式库

Exp

自然对数 e 的次方值。

语法: float exp(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式计算自然对数 (natural logarithm) 的 arg 次方值。

参考


函式:explode()

字串处理函式库

explode

切开字串。

语法: array explode(string separator, string string);

传回值: 阵列

函式种类: 资料处理

内容说明

本函式将字串依指定的字串或字元 separator 切开。将切开后的字串传回到阵列变数中。

使用范例

<?
$pizza = "第一片 第二片 第三片 第四片 第五片 第六片";
$pieces = explode(" ", $pizza);
?>

参考

implode()


函式:extract()

杂项函式库

extract

汇入阵列到符号表。

语法: void extract(array var_array, int [extract_type], string [prefix]);

传回值: 无

函式种类: 资料处理

内容说明

本函式用来汇入阵列变数到目前使用的符号表之中。参数 var_array 为待汇入的阵列变数。参数 extract_type 为输出的型态，内定值为 EXTR_OVERWRITE，见下表

EXTR_OVERWRITE | 遇相同的变数名则取而代之。
EXTR_SKIP | 遇相同的变数名则略过不取代。
EXTR_PREFIX_SAME | 遇相同的变数名则取新变数名称。
EXTR_PREFIX_ALL | 全部取新的变数名称。

参数 prefix 为参数 extract_type 值为 EXTR_PREFIX_SAME 或者 EXTR_PREFIX_ALL 时，用来加在变数名称前的字串。

使用范例

本例传回值为 红色, 大号, 弧型, 中号，其中的 size 变数不变。

<?
$size = "大号";
$var_array = array("color" => "红色",
"size" => "中号",
"shape" => "弧型");
extract($var_array, EXTR_PREFIX_SAME, "new");
print "$color, $size, $shape, $new_size\n";
?>


函式:fclose()

档案系统函式库

fclose

关闭已开启的档案。

语法: int fclose(int fp);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来关闭已经开启的档案的指标 fp。成功传回 true，失败则传回 false。其中的档案指标必须是有效的，且必须是已经用 fopen() 或 fsockopen() 成功开档的指标。


函式:FDF_close()

FDF 函式库

FDF_close

关闭 FDF 文件。

语法: boolean pdf_close(int handle);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来关闭一份 FDF 文件。handle 为 FDF 文件的 handle 值。若欲关闭的 handle 值不存在则传回 false 值。

参考

FDF_open()


函式:FDF_create()

FDF 函式库

FDF_create

建立新的 FDF 文件。

语法: int fdf_create(void);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来建立新的 FDF 文件。若无法建立则传回 false 值，成功建立则传回文件的 handle。

参考


函式:FDF_get_file()

FDF 函式库

FDF_get_file

取得 /F 键的值。

语法: string fdf_get_file(int handle);

传回值: 字串

函式种类: 特殊档案格式

内容说明

本函式取得 FDF 文件 /F 键的值。参数 handle 为开档的代号。

参考

FDF_set_file()


函式:FDF_get_status()

FDF 函式库

FDF_get_status

取得 /STATUS 键的值。

语法: string fdf_get_status(int handle);

传回值: 字串

函式种类: 特殊档案格式

内容说明

本函式取得 FDF 文件 /STATUS 键的值。参数 handle 为开档的代号。

参考

FDF_set_status()


函式:FDF_get_value()

FDF 函式库

FDF_get_value

取得栏位的值。

语法: string fdf_get_value(int handle, string fieldname);

传回值: 字串

函式种类: 特殊档案格式

内容说明

本函式取得 FDF 文件指定栏位的值。参数 handle 为开档的代号。参数 fieldname 为栏位名称字串。

参考

FDF_set_value()


函式:FDF_next_field_name()

FDF 函式库

FDF_next_field_name

下一栏位的名称。

语法: string fdf_next_field_name(int handle, string fieldname);

传回值: 字串

函式种类: 特殊档案格式

内容说明

本函式传回下一个栏位的名称。参数 handle 为开档的代号。参数 fieldname 为指定栏位名称字串。

参考


函式:FDF_open()

FDF 函式库

FDF_open

打开 FDF 文件。

语法: int pdf_open(string filename);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来开启一份 FDF 文件。若参数 filename 为 '.' 则从基本输入 (stdin) 读取资料。

参考

FDF_close()


函式:FDF_save()

FDF 函式库

FDF_save

将 FDF 文件存档。

语法: boolean pdf_save(string filename);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将 FDF 文件另存新档。参数 filename 为欲储存的档名，若值为 "." 表示存到基本输出设备 (stdout)。若无法存档则传回 false 值。

参考

FDF_close()


函式:FDF_set_ap()

FDF 函式库

FDF_set_ap

设定显示栏位。

语法: boolean fdf_set_ap(int handle, string fieldname, int face, string filename, int pagenr);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式设定显示 (appearence) 栏位。参数 handle 为开档的代号。参数 fieldname 为指定栏位名称字串。参数 fase 的值若为 1 则为 FDFNormalAP，为内定值；若为 2 则表 FDFRolloverAP；若为 3 则为 FDFDownAP。


函式:FDF_set_file()

FDF 函式库

FDF_set_file

设定 /F 键。

语法: boolean fdf_set_file(int handle, string filename);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式设定 FDF 文件的 /F 键。参数 handle 为开档的代号。参数 filename 为欲设定的字串值。

参考

FDF_get_file()


函式:FDF_set_status()

FDF 函式库

FDF_set_status

设定 /STATUS 键。

语法: boolean fdf_set_status(int handle, string status);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式设定 FDF 文件的 /STATUS 键。参数 handle 为开档的代号。参数 status 为欲设定的字串值。

参考

FDF_get_status()


函式:FDF_set_value()

FDF 函式库

FDF_set_value

设定栏位的值。

语法: boolean fdf_set_value(int handle, string fieldname, string value, int isName);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式设定 FDF 文件指定栏位的值。参数 handle 为开档的代号。参数 fieldname 为栏位名称字串。参数 value 为欲设定的栏位值字串。参数 isName 为 0 表示为 PDF 字串，值 1 表示为 PDF 名称。

参考

FDF_get_value()


函式:feof()

档案系统函式库

feof

测试档案指标是否指到档尾。

语法: int feof(int fp);

传回值: 整数

函式种类: 档案存取

内容说明

本函式测试档案的指标是否指到档尾 (End of File, EOF)。若是成功或发生错误则传回 true 值，其它情形传回 false 值。其中的档案指标必须是有效的，且必须是已经用 fopen()、popen() 或 fsockopen() 成功开档的指标。


函式:fgetc()

档案系统函式库

fgetc

取得档案指标所指的字元。

语法: string fgetc(int fp);

传回值: 字串

函式种类: 档案存取

内容说明

本函式取得档案指标所指的字元，传回字串型态的字元。指标若在 EOF 则传回 false。其中的档案指标必须是有效的，且必须是已经用 fopen()、popen() 或 fsockopen() 成功开档的指标。

参考


函式:fgetcsv()

档案系统函式库

fgetcsv

取得档案指标所指行，并剖析 CSV 栏位。

语法: array fgetcsv(int fp, int length, string [delimiter]);

传回值: 阵列

函式种类: 档案存取

内容说明

本函式与 fgets() 的功用类似，不同的地方在于本函式用来剖析读取行的 CSV 栏位资料，并将其放入阵列变数之中。其中的第三个参数 delimiter 若未指定，则使用内定值：逗号。其中的档案指标 fp 必须是有效的，且必须是已经用 fopen()、popen() 或 fsockopen() 成功开档的指标。而第二个参数 length 的值必须要比 CSV 档案最长一行的字元数还大。本函式若发生错误或者到档尾 (EOF, end of file)，则会传回 false 值。若遇到空行，则传到阵列结构的字元为空字元栏位 (null)，而不是当作发生错误的情形。

使用范例

<?
$row=1;
$fp = fopen("mycsv.csv","r");
while ($data = fgetcsv($fp,1000, ",")) {
$num = count($data);
print "<p>栏位 $num 在第 $row 行: <br>";
$row++;
for ( $c=0; $c<$num; $c++ ) print $data[$c] . "<br>";
}
fclose($fp);
?>


函式:fgets()

档案系统函式库

fgets

取得档案指标所指的行。

语法: string fgets(int fp, int length);

传回值: 字串

函式种类: 档案存取

内容说明

本函式取得档案指标所指的行，传回字串长度为行的长度减一。若发生错误则传回 false。一般常遇到的陷阱是用 C 语言的经验来使用本函式，而 EOF 时的处理方式则和 C 语言的 fgets() 不同。其中的档案指标必须是有效的，且必须是已经用 fopen()、popen() 或 fsockopen() 成功开档的指标。

使用范例

<?php
$fd = fopen("/tmp/myfile.txt", "r");
while ($buffer = fgets($fd, 4096)) {
echo $buffer;
}
fclose($fd);
?>

参考


函式:fgetss()

档案系统函式库

fgetss

取得档案指标所指的行，并去掉 HTML 语言标记。

语法: string fgetss(int fp, int length);

传回值: 字串

函式种类: 档案存取

内容说明

本函式除了 fgets() 的功能，并同时去掉取回字串中的 HTML 语言及 PHP 语法的标记字串。

参考


函式:file()

档案系统函式库

file

将档案全部读入阵列变数中。

语法: array file(string filename);

传回值: 阵列

函式种类: 档案存取

内容说明

本函式与 readfile() 类似，不同的地方为本函式将档案全部读出，并输出到阵列的变数中，每行都是单独的阵列元素。

参考


函式:file_exists()

档案系统函式库

file_exists

检查档案是否存在。

语法: int file_exists(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来测试检查档案是否存在，传回 true 表示档案存在。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:fileatime()

档案系统函式库

fileatime

取得档案最后的存取时间。

语法: int fileatime(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回指定档案 filename 的最后存取时间。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:filectime()

档案系统函式库

filectime

取得档案最后的改变时间。

语法: int filectime(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回指定档案 filename 的 inode 最后改变时间。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:filegroup()

档案系统函式库

filegroup

取得档案所属的群组。

语法: int filegroup(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回指定档案的群组使用者 GID 值。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:fileinode()

档案系统函式库

fileinode

取得档案的 inode 值。

语法: int fileinode(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回指定档案的 inode 值。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:filemtime()

档案系统函式库

filemtime

取得档案最后的修改时间。

语法: int filemtime(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回指定档案 filename 的最后修改时间。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。

使用范例

以下是 benbatten@home.com (29-Apr-1999) 在 Win95 上的实作范例，例中传回当页 Homepage 的最后修改时间并将 filemtime() 传回的 UNIX 格式的时间字串转换成 12 小时制的字串。

(注：由于本例的档案为 __FILE__ 表示目前的档案，其实和使用 getlastmod() 函式有相同的效果。)

<?php
$filemod = filemtime(__FILE__);
$filemodtime = date("F j Y h:i:s A", $filemod);
print("本页最后修改时间: $filemodtime");
?>


函式:fileowner()

档案系统函式库

fileowner

取得档案的拥有者。

语法: int fileowner(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回指定档案拥有者的 UID 值。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:fileperms()

档案系统函式库

fileperms

取得档案的权限设定。

语法: int fileperms(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回指定档案的权限设定值。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:filepro()

filePro 资料库函式库

filepro

读取 FilePro Map 档。

语法: boolean filepro(string directory);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来读取 FilePro 资料库的 Map 档。


函式:filepro_fieldcount()

filePro 资料库函式库

filepro_fieldcount

取得栏位数目。

语法: int filepro_fieldcount(void);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得 FilePro 资料库的栏位 (field) 数目。


函式:filepro_fieldname()

filePro 资料库函式库

filepro_fieldname

取得栏位名称。

语法: string filepro_fieldname(int field_number);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来读取 FilePro 资料库中指定栏位的栏位名称。参数 field_number 为栏位的序号，为正整数型态。


函式:filepro_fieldtype()

filePro 资料库函式库

filepro_fieldtype

取得栏位型态。

语法: string filepro_fieldtype(int field_number);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来读取 FilePro 资料库中指定栏位的栏位型态。参数 field_number 为栏位的序号，为正整数型态。


函式:filepro_fieldwidth()

filePro 资料库函式库

filepro_fieldwidth

取得栏位宽度。

语法: int filepro_fieldwidth(int field_number);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来读取 FilePro 资料库中指定栏位的栏位宽度。参数 field_number 为栏位的序号，为正整数型态。


函式:filepro_retrieve()

filePro 资料库函式库

filepro_retrieve

取得指定储存格资料。

语法: string filepro_retrieve(int row_number, int field_number);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来读取 FilePro 资料库中指定储存格的资料。参数 row_number 及 field_number 分别为列数及栏数，均为正整数型态。


函式:filepro_rowcount()

filePro 资料库函式库

filepro_rowcount

取得列数目。

语法: int filepro_rowcount(void);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得 FilePro 资料库的列 (row) 数目。


函式:filesize()

档案系统函式库

filesize

获得档案的大小。

语法: int filesize(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回指定档案的档案大小。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:filetype()

档案系统函式库

filetype

获得档案的型态。

语法: string filetype(string filename);

传回值: 字串

函式种类: 档案存取

内容说明

本函式传回指定档案的档案型态。可能的传回型态有 fifo、char、dir、block、link、file 及 unknown 等等。传回 false 表示发生错误。传回值放在快取缓冲区中，可以参考 clearstatcache()。


函式:flock()

档案系统函式库

flock

锁住档案。

语法: boolean flock(int fp, int operation);

传回值: 布林值

函式种类: 档案存取

内容说明

本函式用来锁住档案，使别的行程无法存取。传入的参数 fp 为档案的指标。参数 operation 的值为下列的数字之一：1 表示设定锁住档案可以允许别的行程读取；2 表示只有该行程可以写入档案；3 表示读写均锁住；4 则不锁住区块 (block)。而本函式无论在 UNIX 或是 Windows 系列中的锁住效果都相近。执行成功则传回 true 值，否则传回 false 值。


函式:Floor()

数学运算函式库

Floor

计算小于指定数的最大整数。

语法: int floor(float number);

传回值: 整数

函式种类: 数学运算

内容说明

本函式用来计算比浮点参数 number 小的最大整数。

使用范例

本例传回值为 3。

<?php
$lastint=floor(3.14);
echo $lastint;
?>

参考


函式:flush()

字串处理函式库

flush

清出输出缓冲区。

语法: void flush(void);

传回值: 无

函式种类: 资料处理

内容说明

本函式无输入亦无输出。将输出缓冲区的资料送出，并清出。


函式:fopen()

档案系统函式库

fopen

开启档案或者 URL。

语法: int fopen(string filename, string mode);

传回值: 整数

函式种类: 档案存取

内容说明

说明: 本函式可用来开启本地或者远端的档案。若参数 filename 为 "http://......" 则本函数利用 HTTP 1.0 协定与伺服器连线，档案指标则指到伺服器传回文件的起始处。若参数 filename 为 "ftp://......." 则本函数会与伺服器连线，档案指标指到指定的档案处。若 FTP 伺服器没有支援被动模式 (passive mode ftp) 则传回失败值。开启的 FTP 档案可以是读取或写入其中之一，但不能读或写二种同时使用。其它的情形，本函式开启本地的档案，档案的指标则指向开启的档案。若开档失败，则传回 false 值。

字串参数 mode 可以是下列的情形：

  • 'r' 开档方式为唯读，档案指标指到开始处。
  • 'r+' 开档方式为可读写，档案指标指到开始处。
  • 'w' 开档方式为写入，档案指标指到开始处，并将原档的长度设为 0。若档案不存在，则建立新档。
  • 'w+' 开档方式为可读写，档案指标指到开始处，并将原档的长度设为 0。若档案不存在，则建立新档。
  • 'a' 开档方式为写入，档案指标指到档案最后。若档案不存在，则建立新档。
  • 'a+' 开档方式为可读写，档案指标指到档案最后。若档案不存在，则建立新档。
  • 'b' 若作业系统的文字及二进位档不同，则可以用此参数，UNIX 系统不需要使用本参数。

使用范例

第一行为 UNIX 系统使用；第二行是 Windows 系列系统的用法；第三、四行则为 URL 的使用范例。

<?
$fp = fopen("/home/rasmus/file.txt", "r");
$fp = fopen("c:\\mydata\\info.txt", "r");
$fp = fopen("http://www.php.net/", "r");
$fp = fopen("ftp://user:password@my.com/", "w");
?>

参考


函式:fpassthru()

档案系统函式库

fpassthru

输出所有剩余资料。

语法: int fpassthru(int fp);

传回值: 整数

函式种类: 档案存取

内容说明

本函式读取档案 fp 直到档尾 (End of file, EOF)，并将资料输出到标准输出 (standard output)。若有错误发生，则传回 false 值。而档案 fp 必须由 fopen()、popen() 或 fsockopen() 开启成功的指标。当本函式读完档案，会自动将档案关闭，即 fp 变无效。如果只是要将档案输出到标准输出，可以使用 readfile() 会比用 fopen() 更好。

参考


函式:fputs()

档案系统函式库

fputs

写到档案指标。

语法: int fputs(int fp, string str, int [length]);

传回值: 整数

函式种类: 档案存取

内容说明

本函式即 fwrite()，只是一个别名。用来将字串 str 写到档案指标。


函式:fread()

档案系统函式库

fread

位元组的方式读取档案。

语法: string fread(int fp, int length);

传回值: 字串

函式种类: 档案存取

内容说明

本函式读到指定长度的位元组或到档尾 EOF。

使用范例

<?php
$filename = "/usr/local/myfile.txt";
$fd = fopen( $filename, "r" );
$contents = fread($fd, filesize($filename));
fclose( $fd );
?>

参考


函式:FrenchToJD()

历法函式库

FrenchToJD

将法国共和历法转换成为凯撒日计数。

语法: int frenchtojd(int month, int day, int year);

传回值: 整数

函式种类: 时间日期

内容说明

函式只能转换法国共和历元年到十四年，也就是格里高里历的 1792 年 9 月 22 日至 1806 年 9 月 22 日。


函式:fseek()

档案系统函式库

fseek

移动档案指标。

语法: int fseek(int fp, int offset);

传回值: 整数

函式种类: 档案存取

内容说明

本函式将档案 fp 的指标移到指定的偏移位元 (offset) 上。使用本函式就像 C 语言中的 fseek(fp, offset, SEEK_SET) 函式。成功则传回 0，失败则传回 -1 值。当 fp 由 fopen() 开启 "http://...." 或是 "ftp://...." 等 URL 档案时，本函式无法作用。

参考


函式:fsockopen()

网路函式库

fsockopen

打开网路的 Socket 连结。

语法: int fsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);

传回值: 整数

函式种类: 网路系统

内容说明

目前这个函式提供二个 Socket 资料流介面，分别为 Internet 用的 AF_INET 及 Unix 用的 AF_UNIX。当在 Internet 情形下使用时，参数 hostname 及 port 分别代表网址及埠号。在 UNIX 情形可做 IPC，hostname 参数表示到 socket 的路径，port 设定为 0。可省略的 timeout 选项表示多久没有连上就中断。在使用本函式之后会传回档案指标，供档案函式使用，包括 fgets()、fgetss()、fputs()、fclose() 与 feof()。参数 errno 及 errstr 也是可省略的，主要当做错误处理使用。使用本函式，会使用搁置模式 (blocking mode) 处理，可用 set_socket_blocking() 转换成无搁置模式。

使用范例

本例用来模拟成 HTTP 连线。
<?php
$fp = fsockopen("php.wilson.gs", 80, &$errno, &$errstr, 10);
if(!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
fputs($fp,"GET / HTTP/1.0\nHost: php.wilson.gs\n\n");
while(!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
?>

参考

pfsockopen()


函式:ftell()

档案系统函式库

ftell

取得档案读写指标位置。

语法: int ftell(int fp);

传回值: 整数

函式种类: 档案存取

内容说明

本函式传回档案 fp 的指标偏移位元 (offset) 值。当发生错误时，传回 false 值。档案指标 fp 必须是有效的，且使用 fopen() 或者 popen() 二个函式开启方可作用。

参考


函式:ftp_cdup()

FTP 档案传输函式库

ftp_cdup

回上层目录。

语法: boolean ftp_cdup(int ftp_stream);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来回到上层目录，也就是目前目录的父目录。参数 ftp_stream 为 FTP 的连线代码。成功则传回 true 值。


函式:ftp_chdir()

FTP 档案传输函式库

ftp_chdir

改变路径。

语法: boolean ftp_chdir(int ftp_stream, string directory);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来改变路径。参数 ftp_stream 为 FTP 的连线代码。参数 directory 为欲前往的目录。成功则传回 true 值，失败则传回 false 值。


函式:ftp_connect()

FTP 档案传输函式库

ftp_connect

开启 FTP 连结。

语法: int ftp_connect(string host, int [port]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可开启 FTP 伺服器的连结。参数 host 为 FTP 伺服器的网址。参数 port 通常省略，若 FTP 伺服器的埠号 (port) 不是 21 时才需要加本参数。若无错误则传回连线代码，失败则传回 false 值。

参考

ftp_quit()


函式:ftp_delete()

FTP 档案传输函式库

ftp_delete

将档案删除。

语法: boolean ftp_delete(int ftp_stream, string remote_file);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式可将远端 FTP 伺服器的档案删除，若是权限不符则无法删除。参数 ftp_stream 为 FTP 的连线代码。参数 remote_file 为欲删除的档案名。成功则传回 true 值，失败则传回 false 值。


函式:ftp_fget()

FTP 档案传输函式库

ftp_fget

下载档案，并存在已开的档中。

语法: boolean ftp_fget(int ftp_stream, int fp, string remote_file, int mode);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来下载指定的档案。参数 ftp_stream 为 FTP 的连线代码。参数 fp 为本地端的已开档的档案指标。参数 remote_file 为欲下载的档案名。参数 mode 的值有 FTP_ASCII 及 FTP_BINARY 二种，分别表示文字档或者是二进位档。成功则传回 true 值，失败则传回 false 值。


函式:ftp_fput()

FTP 档案传输函式库

ftp_fput

上传已开启档案。

语法: boolean ftp_fput(int ftp_stream, string remote_file, int fp, int mode);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来上传指定的档案。参数 ftp_stream 为 FTP 的连线代码。参数 remote_file 为欲存在远端的档案名。参数 fp 为欲上传的已开档档案指标。参数 mode 的值有 FTP_ASCII 及 FTP_BINARY 二种，分别表示文字档或者是二进位档。成功则传回 true 值，失败则传回 false 值。


函式:ftp_get()

输入待寻字串
<?php
require( "http://php.wilson.gs"); // 回首页
echo "http://php.wilson.gs/bible/function.php : 函式:ftp_get()";

 函式:ftp_get()

FTP 档案传输函式库

ftp_get

下载档案。

语法: boolean ftp_get(int ftp_stream, string local_file, string remote_file, int mode);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来下载指定的档案。参数 ftp_stream 为 FTP 的连线代码。参数 local_file 为欲存成本地端的档名。参数 remote_file 为欲下载的档案名。参数 mode 的值有 FTP_ASCII 及 FTP_BINARY 二种，分别表示文字档或者是二进位档。成功则传回 true 值，失败则传回 false 值。


函式:ftp_login()

FTP 档案传输函式库

ftp_login

登入 FTP 伺服器。

语法: boolean ftp_login(int ftp_stream, string username, string password);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式可登入已连结的 FTP 伺服器。参数 ftp_stream 为 FTP 的连线代码。参数 username 及 password 分别为伺服器的使用者帐号及密码，通常 anonymous 为公开的使用帐号，密码则为 Email。成功则传回 true 值。


函式:ftp_mdtm()

FTP 档案传输函式库

ftp_mdtm

获得指定档案的最后修改时间。

语法: int ftp_mdtm(int ftp_stream, string remote_file);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来获取 FTP 伺服器上指定档案的最后修改时间。参数 ftp_stream 为 FTP 的连线代码。参数 remote_file 为欲获取修改时间的档案名。传回值为 UNIX 的时间格式 (timestamp)，失败则传回 -1 值。


函式:ftp_mkdir()

FTP 档案传输函式库

ftp_mkdir

建新目录。

语法: string ftp_mkdir(int ftp_stream, string directory);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来建立新的目录。参数 ftp_stream 为 FTP 的连线代码。参数 directory 为欲建立的新目录。成功则传回已建立的目录名，失败则传回 false 值。


函式:ftp_nlist()

FTP 档案传输函式库

ftp_nlist

列出指定目录中所有档案。

语法: array ftp_nlist(int ftp_stream, string directory);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来列出指定路径中的所有档案名称。参数 ftp_stream 为 FTP 的连线代码。参数 directory 为指定的目录。成功则传回档案名称的阵列，失败则传回 false 值。


函式:ftp_pasv()

FTP 档案传输函式库

ftp_pasv

切换主被动传输模式。

语法: boolean ftp_systype(int ftp_stream);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式可以切换成主动传输或者被动传输模式，也就等于对 FTP 伺服器下 passive 或 pass 指令。参数 ftp_stream 为 FTP 的连线代码。成功则传回 true 值，失败则传回 false 值。


函式:ftp_put()

FTP 档案传输函式库

ftp_put

上传档案。

语法: boolean ftp_put(int ftp_stream, string remote_file, string local_file, int mode);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来上传指定的档案。参数 ftp_stream 为 FTP 的连线代码。参数 remote_file 为欲存在远端的档案名。参数 local_file 为欲上传档案的档名。参数 mode 的值有 FTP_ASCII 及 FTP_BINARY 二种，分别表示文字档或者是二进位档。成功则传回 true 值，失败则传回 false 值。


函式:ftp_pwd()

FTP 档案传输函式库

ftp_pwd

取得目前所在路径。

语法: string ftp_pwd(int ftp_stream);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得目前在 FTP 伺服器中的路径。参数 ftp_stream 为 FTP 的连线代码。若有错误则传回 NULL 值。


函式:ftp_quit()

FTP 档案传输函式库

ftp_quit

关闭 FTP 连线。

语法: boolean ftp_quit(int ftp_stream);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来将远端 FTP 伺服器连线关闭。参数 ftp_stream 为 FTP 的连线代码。成功则传回 true 值，失败则传回 false 值。

参考

ftp_connect()

[ 上一页 ]


函式:ftp_rawlist()

FTP 档案传输函式库

ftp_rawlist

详细列出指定目录中所有档案。

语法: array ftp_rawlist(int ftp_stream, string directory);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式可详细列出指定路径中的所有档案名称。参数 ftp_stream 为 FTP 的连线代码。参数 directory 为指定的目录。成功则传回档案名称的阵列，失败则传回 false 值。


函式:ftp_rename()

FTP 档案传输函式库

ftp_rename

将档案改名。

语法: boolean ftp_rename(int ftp_stream, string from, string to);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式可将远端 FTP 伺服器的档案改名字，值得注意的是权限不符时无法更动。参数 ftp_stream 为 FTP 的连线代码。参数 from 为原来的档名。参数 to 为欲改的新档名。成功则传回 true 值，失败则传回 false 值。


函式:ftp_rmdir()

FTP 档案传输函式库

ftp_rmdir

删除目录。

语法: boolean ftp_chdir(int ftp_stream, string directory);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来删除空目录。参数 ftp_stream 为 FTP 的连线代码。参数 directory 为欲删除的目录。成功则传回 true 值，失败则传回 false 值。


函式:ftp_size()

FTP 档案传输函式库

ftp_size

获得指定档案的大小。

语法: int ftp_size(int ftp_stream, string remote_file);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来获取 FTP 伺服器上指定档案的大小。参数 ftp_stream 为 FTP 的连线代码。参数 remote_file 为欲获取大小档案名。传回值为档案大小，失败则传回 -1 值。


函式:ftp_systype()

FTP 档案传输函式库

ftp_systype

显示伺服器系统。

语法: string ftp_systype(int ftp_stream);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可显示远端 FTP 伺服器的系统，也就等于对 FTP 伺服器下 system 或 syst 指令。参数 ftp_stream 为 FTP 的连线代码。成功则传回字串，如: "215 UNIX Type: L8"，失败则传回 false 值。


函式:function_exists()

杂项函式库

function_exists

查核函式是否已定义。

语法: int function_exists(string function_name);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式用来检查指定的函式是否已经定义。参数 function_name 为待检查的函式名称。若已定义指定的函式则传回 true 值，其它情形均传回 false 值。


函式:fwrite()

档案系统函式库

fwrite

二进位位元方式写入档案。

语法: int fwrite(int fp, string string, int [length]);

传回值: 整数

函式种类: 档案存取

内容说明

本函式将字串 string 写入档案资料流的指标 fp 上。若有指定长度 length，则会写入指定长度字串，或是写到字串结束。值得注意的是若指定了长度，则在 PHP 环境设定值 magic_quotes_runtime 的设定将被忽略，同时字串中的斜线不会被删除。

参考


函式:get_cfg_var()

PHP 选项及相关资讯函式库

get_cfg_var

取得 PHP 的设定选项值。

语法: string get_cfg_var(string varname);

传回值: 字串

函式种类: PHP 系统功能

内容说明

若正确取得目前 PHP 设定选项 varname，则传回变数值。失败则传回 false。


函式:get_current_user()

PHP 选项及相关资讯函式库

get_current_user

取得 PHP 行程的拥有者名称。

语法: string get_current_user(void);

传回值: 字串

函式种类: PHP 系统功能

内容说明

本函式用来取得 PHP 程式行程的拥有者名称。

参考


函式:get_magic_quotes_gpc()

PHP 选项及相关资讯函式库

get_magic_quotes_gpc

取得 PHP 环境变数 magic_quotes_gpc 的值。

语法: long get_magic_quotes_gpc(void);

传回值: 长整数

函式种类: PHP 系统功能

内容说明

本函式取得 PHP 环境设定的变数 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。传回 0 表示关闭本功能；传回 1 表示本功能开启。当 magic_quotes_gpc 开启时，所有的 ' (单引号), " (双引号), \ (反斜线) and 空字元会自动转为含有反斜线的溢出字元。

参考


函式:get_magic_quotes_runtime()

PHP 选项及相关资讯函式库

get_magic_quotes_runtime

取得 PHP 环境变数 magic_quotes_runtime 的值。

语法: long get_magic_quotes_runtime(void);

传回值: 长整数

函式种类: PHP 系统功能

内容说明

本函式取得 PHP 环境设定的变数 magic_quotes_runtime 值。传回 0 表示关闭本功能；传回 1 表示本功能开启。若 magic_quotes_runtime 开启时，所有外部引入的资料库资料或者档案等等都会自动转为含有反斜线溢出字元的资料。

参考


函式:get_meta_tags()

字串处理函式库

get_meta_tags

抽出档案所有 meta 标记的资料。

语法: array get_meta_tags(string filename, int [use_include_path]);

传回值: 阵列

函式种类: 资料处理

内容说明

本函式将 homepage 中的所有 <meta ......> 标记的资料取出并放置阵列变数传回。例如

  <html>
  <head>
  <meta name="author" content="彭武兴">
  <meta name="title" content="PHP BIBLE">
  <title>PHP BIBLE</title>
  </head><!-- 本函式处理只到这儿结束 -->

本函式找出 meta 标记，name 属性的字串为阵列索引，而 content 属性字串则为阵列的内容资料了。值得注意的是本函式为 PHP 原生函式，在 UNIX 系列平台上无法直接处理麦金塔的档案格式，因为换行字元不同。blake@mediaone.net 指出 (07-Jun-1999)，参数 filename 也可以是 URL，函式将抽出远端伺服器的档案 meta 标记。而函式在处理时，遇到 </head> 标记结束，要是 <meta ....> 标记放在 </head> 后将无法处理。


函式:getallheaders()

阿帕契伺服器专用函式库

getallheaders

获得所有 HTTP 变数值。

语法: array getallheaders(void);

传回值: 阵列

函式种类: PHP 系统功能

内容说明

使用本项功能时不需代入任何参数值，传回的是所有 HTTP 变数值，并使用组合的阵列传回。

使用范例

下例列出所有的 HTTP 变数

<?php
$headers = getallheaders();
while (list($header, $value) = each($headers)) {
echo "$header: $value<br>\n";
}
?>

备注: 这个函式只有 PHP 以阿帕契伺服器的模组 (module) 方式执行时方有效。


函式:getdate()

日期与时间函式库

getdate

获得时间及日期资讯。

语法: array getdate(int timestamp);

传回值: 阵列

函式种类: 时间日期

内容说明

传回阵列的元素包括下列的项目：

  • "seconds" - 秒
  • "minutes" - 分
  • "hours" - 时
  • "mday" - 当月的第几天
  • "wday" - 当周的第几天数字
  • "mon" - 月份数字
  • "year" - 年，数字
  • "yday" - 当年的第几天数字; 如: "299"
  • "weekday" - 星期几全名; 如: "Friday"
  • "month" - 月份全名; 如: "January"


函式:getenv()

PHP 选项及相关资讯函式库

getenv

取得系统的环境变数

语法: string getenv(string varname);

传回值: 字串

函式种类: PHP 系统功能

内容说明

若正确取得环境变数 varname，则传回变数值。失败则传回 false。

使用范例

下例可以取得使用者浏览器所在机器的网址

<?
$ip = getenv("REMOTE_ADDR");
?>


函式:gethostbyaddr()

网路函式库

gethostbyaddr

传回机器名称。

语法: string gethostbyaddr(string ip_address);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可传回某个 IP 网址的机器名称 (Domain Name)。若执行失败，则传回原来的 IP 网址。

使用范例

下例的传回值为 dns.biglobe.net.tw

<?
echo gethostbyaddr("202.166.255.97");
?>

参考

gethostbyname()


函式:gethostbyname()

网路函式库

gethostbyname

传回 IP 网址。

语法: string gethostbyname(string hostname);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可传回某个机器名称 (Domain Name) 的 IP 网址 (IP Address)。若执行失败，则传回原来的机器名称。

使用范例

下例的传回值为 140.137.33.246

<?
echo gethostbyaddr("www.hkcc.pccu.edu.tw");
?>

参考

gethostbyaddr()


函式:gethostbynamel()

网路函式库

gethostbynamel

传回机器名称的所有 IP。

语法: array gethostbynamel(string hostname);

传回值: 阵列

函式种类: 网路系统

内容说明

若一个机器名称有很多个 IP 位址 (例如一些 FTP 或是 WWW 站台)，使用本函式可以取得全部的 IP 位址，传回到阵列变数中。

使用范例

本范例列出所有网景 FTP 站的 IP。(注：网景的 FTP 站是一个 Domain Name 却对映到许多 IP Address 的站台。)

<?php
$netscapeftp=gethostbynamel("ftp.netscape.com");
echo "Netscape FTP 站台 IP Address:<ol type=1>";
for ($i=0; $i<count($netscapeftp); $i++) {
echo "<li>".$netscapeftp[$i];
}
echo "</ol>";
?>

参考


函式:GetImageSize()

图形处理函式库

GetImageSize

取得图片的长宽。

语法: array getimagesize(string filename, array [imageinfo]);

传回值: 阵列

函式种类: 图形处理

内容说明

本函式可用来取得 GIF、JPEG 及 PNG 三种 WWW 上图片的高与宽，不需要安装 GD library 就可以使用本函式。传回的阵列有四个元素。传回阵列的第一个元素 (索引值 0) 是图片的高度，单位是像素 (pixel)。第二个元素 (索引值 1) 是图片的宽度。第三个元素 (索引值 2) 是图片的档案格式，其值 1 为 GIF 格式、 2 为 JPEG/JPG 格式、3 为 PNG 格式。第四个元素 (索引值 3) 为图片的高与宽字串，height=xxx width=yyy。可省略的参数 imageinfo 用来取得一些图片的相关讯息，例如 IPTC (http://www.xe.net/iptc) 的 APP13 标记，就可以加在图片中，可利用 iptcparse() 来解析。

使用范例

<?php
function MyImg($imgfile) {
$size = GetImageSize($imgfile);
echo "<img src=\"$imgfile\" $size[3]>";
}
MyImg("img/img1.gif");
MyImg("img/img2.png");
?>


函式:getlastmod()

PHP 选项及相关资讯函式库

getlastmod

传回该网页的最后修改时间。

语法: int getlastmod(void);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式传回让该函式所网页的最后修改时间，传回的是 UNIX 的时间戳记 (timestamp) 格式，可用 4.7.2 date() 函式将传回值格式化。若执行失败则传回 false 值。

使用范例

下例传回值类似 '本页最后修改时间: June 19 1999 20:43:59.'

<?php
echo "本页最后修改时间: ".date("F d Y H:i:s.", getlastmod());
?>

参考


函式:getmxrr()

网路函式库

getmxrr

取得指定网址 DNS 记录之 MX 栏位。

语法: int getmxrr(string hostname, array mxhosts, array [weight]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来检查 DNS 栏位纪录中的 MX 栏位，也就是电子邮件伺服器 Mail eXchanger 栏位。若找到了指定网址 DNS 纪录的 MX 栏位，传回 true；若未找到指定的 DNS MX 栏位或是有错误均会传回 false。指定网址的所有 MX 栏位纪录的机器都会传入阵列参数 mxhosts 中。若有指定阵列参数 weight，则同时传回 MX 机器的优先顺序。

参考


函式:getmyinode()

PHP 选项及相关资讯函式库

getmyinode

传回该网页的 inode 值。

语法: int getmyinode(void);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式传回该网页的 inode 值。若执行失败则传回 false 值。

参考


函式:getmypid()

PHP 选项及相关资讯函式库

getmypid

传回 PHP 的行程代号。

语法: int getmypid(void);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式传回 PHP 的行程代号值 (PID)。若执行失败则传回 false 值。当 PHP 以 Apache 模组存在时，传回的 PID 值不见得是正确的。

参考


函式:getmyuid()

PHP 选项及相关资讯函式库

getmyuid

传回 PHP 的使用者代码。

语法: int getmyuid(void);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式传回 PHP 的使用者代码 (UID)。若执行失败则传回 false 值。

参考


函式:getrandmax()

数学运算函式库

getrandmax

乱数的最大值。

语法: int getrandmax(void);

传回值: 整数

函式种类: 数学运算

内容说明

本函式计算乱数函式 rand() 可能取得的取得的最大乱数值。本函式不需参数。

参考


函式:getrusage()

PHP 选项及相关资讯函式库

getrusage

传回系统资源使用率。

语法: array getrusage(int [who]);

传回值: 阵列

函式种类: PHP 系统功能

内容说明

本函式使用 UNIX 的系统呼叫 getrusage(2)。传回的资讯以阵列的方式传回。若参数 who 为 1，本函式会呼叫 RUSAGE_CHILDREN。更进一步的资讯可以参考 UNIX 函式库方面的文件。

使用范例

<?php
$dat = getrusage();
echo $dat["ru_nswap"]; // Swaps 数
echo $dat["ru_majflt"]; // 分页数
echo $dat["ru_utime.tv_sec"]; // 使用时间 (秒)
echo $dat["ru_utime.tv_usec"]; // 使用时间 (毫秒)
?>


函式:gettimeofday()

日期与时间函式库

gettimeofday

取得目前时间。

语法: array gettimeofday(void);

传回值: 阵列

函式种类: 时间日期

内容说明

传回阵列的元素包括下列的项目：

  • "sec" - 秒
  • "usec" - 百万分之一秒
  • "minuteswest" - 格林威治时间的分
  • "dsttime" - 目的的时区


函式:gettype()

变数处理函式库

gettype

取得变数的型态。

语法: string gettype(mixed var);

传回值: 字串

函式种类: PHP 系统功能

内容说明

本函式用来取得变数的型态。传回的型态字串可能为下列字串其中之一：integer、double、string、array、object、unknown type。

参考

settype()


函式:gmdate()

日期与时间函式库

gmdate

取得目前与 GMT 差后的时间。

语法: string gmdate(string format, int timestamp);

传回值: 字串

函式种类: 时间日期

内容说明

本函式与 date() 函式相似，不同的是本函式传回与格林威治标准时间 (Greenwich Mean Time, GMT) 时间差后的时间。

使用范例

<?php
echo date( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );
echo gmdate( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );
?>

若执行本范例的机器在芬兰 (Finland, GMT +0200)，传回的结果为:
Jan 01 1998 00:00:00
Dec 31 1997 22:00:00

参考


函式:gmmktime()

日期与时间函式库

gmmktime

取得 UNIX 时间戳记的格林威治时间。

语法: int gmmktime(int hour, int minute, int second, int month, int day, int year);

传回值: 整数

函式种类: 时间日期

内容说明

输入一个时间，则传回 UNIX 的格林威治时间戳记的长整数。


函式:GregorianToJD()

历法函式库

GregorianToJD

将格里高里历法转换成为凯撒日计数。

语法: int gregoriantojd(int month, int day, int year);

传回值: 整数

函式种类: 时间日期

内容说明

有效的范围为格里高里历法西元前 4714 年至西元 9999 年。这套软体能计算到西元前 4714 年，但这是不太有意义的。格里高里历在 1582 年 10 月 15 日施行，但一些欧洲国家到很久后才实行，如英国在 1752 年实行、苏联在 1918 年施行、希腊在 1923 年实行。大部份的欧洲国家优先使用凯撒历法，再次才是格里高里历法。

使用范例

<?php
$jd = GregorianToJD(10,11,1970);
echo("$jd\n");
$gregorian = JDToGregorian($jd);
echo("$gregorian\n");
?>


函式:gzclose()

压缩档案函式库

gzclose

关闭压缩档。

语法: boolean gzclose(int zp);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式将已开启的压缩档关闭。参数 zp 为压缩档案的指标代码。成功则传回 true 值。

参考

gzopen()


函式:gzeof()

压缩档案函式库

gzeof

判断是否在压缩档尾。

语法: boolean gzeof(int zp);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来判断目前开启的压缩档指标是否指到档尾 (EOF, End OF File)。参数 zp 为压缩档案的指标代码。在档尾则传回 true 值。


函式:gzfile()

压缩档案函式库

gzfile

读压缩档到阵列中。

语法: array gzfile(string filename);

传回值: 阵列

函式种类: 特殊档案格式

内容说明

本函式将压缩档读出并解压缩至阵列变数中。参数 filename 为档案名称。


函式:gzgetc()

压缩档案函式库

gzgetc

读压缩档中的字元。

语法: string gzgetc(int zp);

传回值: 字串

函式种类: 特殊档案格式

内容说明

本函式将压缩档解压缩并取出一个字元。参数 gz 为压缩档开启代码。若至档尾则会传回 false。


函式:gzgets()

压缩档案函式库

gzgets

读压缩档中的字串。

语法: string gzgets(int zp, int length);

传回值: 字串

函式种类: 特殊档案格式

内容说明

本函式将压缩档解压缩并取出指定长度的字串。参数 gz 为压缩档开启代码。参数 length 为指定字串长度加一，意即读出的字串长度为 length-1。若至档尾或至行尾即行停止，因此本函式通常用来读取一行。


函式:gzgetss()

压缩档案函式库

gzgetss

读压缩档中的字串，并去掉 HTML 指令。

语法: string gzgetss(int zp, int length);

传回值: 字串

函式种类: 特殊档案格式

内容说明

本函式将压缩档解压缩并取出指定长度的字串，并将字串中的 HTML 或 PHP 指令去掉，传回纯文字。参数 gz 为压缩档开启代码。参数 length 为指定字串长度加一，意即读出的字串长度为 length-1。若至档尾或至行尾即行停止，因此本函式通常用来读取一行。


函式:gzopen()

压缩档案函式库

gzopen

开启压缩档。

语法: int gzopen(string filename, string mode);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来开启压缩档。参数 filename 为档案名称。参数 mode 为开档的状态。若有失败则传回 false 值。

使用范例

下面为部份程式

<?php
$fp=gzopen("/tmp/gzfile.gz", "r");
?>

参考

gzclose()


函式:gzpassthru()

压缩档案函式库

gzpassthru

解压缩指标后全部资料。

语法: boolean gzpassthru(int zp);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式将已开启压缩档档案指标后的资料全部解压缩，并输出至标准输出装置 (stdout)。参数 gz 为开档的代码。若有失败则传回 false 值。


函式:gzputs()

压缩档案函式库

gzputs

资料写入压缩档。

语法: boolean gzputs(int zp, string str, int [length]);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式其实就是 gzwrite()。参数 gz 为开档的代码。参数 str 为欲写入的字串。参数 length 可省略，为指定长度。若有失败则传回 false 值。


函式:gzread()

压缩档案函式库

gzread

压缩档读出指定长度字串。

语法: string gzread(int zp, int length);

传回值: 字串

函式种类: 特殊档案格式

内容说明

本函式用来读取指定长度的字串。参数 gz 为开档的代码。参数 length 为指定长度。

使用范例

<?php
$filename = "/temp/sosofile.txt.gz";
$zd = gzopen($filename, "r");
$contents = gzread($zd, 10000);
gzclose($zd);
?>


函式:gzrewind()

压缩档案函式库

gzrewind

重设压缩档指标。

语法: boolean gzrewind(int zp);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式将重设压缩档的档案操作指标到档头处。参数 zp 为开档代码。


函式:gzseek()

压缩档案函式库

gzseek

设压缩档指标至指定处。

语法: int gzseek(int zp, int offset);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式将重设压缩档的档案操作指标到指定的位元处。参数 zp 为开档代码。参数 offset 为第几个位元。成功则传回 0，失败传回 -1。


函式:gztell()

压缩档案函式库

gztell

取得压缩档指标处。

语法: int gztell(int zp);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来取得压缩档的档案操作指标在某位元处。参数 zp 为开档代码。

使用范例

<?php
$exfile=gzopen("/tmp/haha.gz", "r");
$aline=gzgets($exfile, 80);
print("现在档案指标在第".gztell($exfile)."个位元");
gzclose($exfile);
?>


函式:gzwrite()

压缩档案函式库

gzwrite

资料写入压缩档。

语法: boolean gzwrite(int zp, string string, int [length]);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将资料写入指定的压缩档中。参数 gz 为开档的代码。参数 str 为欲写入的字串。参数 length 可省略，为指定长度。若有失败则传回 false 值。


函式:header()

HTTP 相关函式库

header

送出 HTTP 协定的标头到浏览器

语法: int header(string string);

传回值: 整数

函式种类: 网路系统

内容说明

标头 (header) 是伺服器以 HTTP 协定传 HTML 资料到浏览器前所送出的字串，在标头与 HTML 文件之间尚需空一行分隔。有关 HTTP 的详细说明，可以参考坊间的相关书籍或更详细的 RFC 2068 官方文件(http://www.w3.org/Protocols/rfc2068/rfc2068)。在 PHP 中送回 HTML 资料前，需先传完所有的标头。

注意: 传统的标头一定包含下面三种标头之一，并只能出现一次。

  • Content-Type: xxxx/yyyy
  • Location: xxxx:yyyy/zzzz
  • Status: nnn xxxxxx

在新的多型标头规格 (Multipart MIME) 方可以出现二次以上。

使用范例

范例一: 本例用来重导使用者到 PHP 的官方网站。
<?php
Header("Location: http://www.php.net");
exit;
?>

范例二: 欲让使用者每次都能得到最新的资料，而不是 Proxy 或 cache 中的资料，可以使用下列的标头
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

范例三: 让使用者的浏览器出现找不到档案的讯息。
<?php
header("Status: 404 Not Found");
?>

范例四: bill@evil.inetarena.com (28-Apr-1999) 提供让使用者下载档案的范例。
header("Content-type: application/x-gzip");
header("Content-Disposition: attachment; filename=some-file.tar.gz");
header("Content-Description: PHP3 Generated Data");


函式:HexDec()

数学运算函式库

HexDec

十六进位转十进位。

语法: int hexdec(string hex_string);

传回值: 整数

函式种类: 数学运算

内容说明

本函式将十六进位字串转成十进位数字。由于 PHP 使用 32 位元有正负号整数计算，能处理的最大十六进位数字为 7fffffff，也就是十进位数字的 2147483647。

参考

DecHex()


函式:htmlentities()

字串处理函式库

htmlentities

将所有的字元都转成 HTML 字串。

语法: string htmlentities(string string);

传回值: 字串

函式种类: 资料处理

内容说明

本函式有点像 htmlspecialchars() 函式，但本函式会将所有 string 的字元都转成 HTML 的特殊字集字串。不过在转换后阅读网页原始码的方面，会有很多困扰，尤其是网页原始码的中文字会变得不知所云，浏览器上看到的还是正常的。


函式:htmlspecialchars()

字串处理函式库

htmlspecialchars

将特殊字元转成 HTML 格式。

语法: string htmlspecialchars(string string);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将特殊字元转成 HTML 的字串格式 ( &....; )。最常用到的场合可能就是处理客户留言的留言版了。

  • & (和) 转成 &amp;
  • " (双引号) 转成 &quot;
  • < (小于) 转成 &lt;
  • > (大于) 转成 &gt;

此函式只转换上面的特殊字元，并不会全部转换成 HTML 所定的 ASCII 转换。

使用范例

这是 aulbach@unter.franken.de (27-Jan-1999) 所提供的范例

<FORM ACTION=bla>
<H2>Restaurant Description<H2>
Name of restaurant:
<INPUT TYPE=text NAME="restname" VALUE="<?
echo HTMLSpecialChars($restname); ?>">
<!-- 变数 $restname 是酱子的 $restname="\"The White Horse\""; -->
<BR>
输入描述 (若您会 HTML，可直接使用): <BR>
<TEXTAREA NAME="descript"><?
echo HTMLSpecialChars($descript);
?></TEXTAREA>
<INPUT TYPE=submit>
</FORM>

参考


函式:hw_Children()

Hyperwave 伺服器函式库

hw_Children

取得子物件代码。

语法: array hw_children(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得子物件的 ID 代码。参数 connection 为连线的代码。参数 objectID 为欲取得的子物件。


函式:hw_ChildrenObj()

Hyperwave 伺服器函式库

hw_ChildrenObj

取得子物件的物件记录。

语法: array hw_childrenobj(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得子物件的物件记录。参数 connection 为连线的代码。参数 objectID 为欲取得的子物件。


函式:hw_Close()

Hyperwave 伺服器函式库

hw_Close

关闭 Hyperwave 连线。

语法: boolean hw_close(int connection);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来关闭与 Hyperwave 伺服器的连线。参数 connection 为连线代码。


函式:hw_Connect()

Hyperwave 伺服器函式库

hw_Connect

连上 Hyperwave 伺服器。

语法: int hw_connect(string host, int port, string [username], string [password]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来与 Hyperwave 伺服器的连线。参数 host 为 Hyperwave 伺服器。参数 port 为连线的 port。参数 username 与 password 可省略，分别为连线使用的帐号及密码，若省略 username 则为匿名使用。成功则传回连线代码，供其它函式使用，失败则传回 false。

参考


函式:hw_Cp()

Hyperwave 伺服器函式库

hw_Cp

复制物件。

语法: void hw_cp(int connection, array objrec, int dest);

传回值: 无

函式种类: 网路系统

内容说明

本函式用来复制指定的物件。参数 connection 为连线代码。参数 objrec 为待复制的物件代码阵列。参数 dest 为目的的代码。

参考


函式:hw_Deleteobject()

Hyperwave 伺服器函式库

hw_Deleteobject

删除物件。

语法: boolean hw_deleteobject(int connection, int object_to_delete);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来删除指定的物件。参数 connection 为连线代码。参数 object_to_delete 表欲删除的物件。成功则传回 true。

参考


函式:hw_DocByAnchor()

Hyperwave 伺服器函式库

hw_DocByAnchor

取得指定锚的文件物件代码。

语法: int hw_docbyanchor(int connection, int anchorID);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得属于指定锚 (anchor) 的文件物件代码。参数 connection 为连线代码。参数 anchorID 为锚代码。成功则传回代码值。


函式:hw_DocByAnchorObj()

Hyperwave 伺服器函式库

hw_DocByAnchorObj

取得指定锚的文件物件。

语法: string hw_docbyanchorobj(int connection, int anchorID);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得属于指定锚 (anchor) 的文件物件。参数 connection 为连线代码。参数 anchorID 为锚代码。成功则传回物件字串。


函式:hw_DocumentAttributes()

Hyperwave 伺服器函式库

hw_DocumentAttributes

取得指定文件物件属性。

语法: string hw_documentattributes(int hw_document);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得指定文件物件的属性。参数 hw_document 为文件物件。成功则传回物件字串。

参考


函式:hw_DocumentBodyTag()

Hyperwave 伺服器函式库

hw_DocumentBodyTag

取得指定文件物件的文件主体标记。

语法: string hw_documentbodytag(int hw_document, string [prefix]);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得指定文件物件的文件主体 (body) 标记 (tag)。参数 hw_document 为文件物件。参数 prefix 可省略，表示在标记前要加的字串。成功则传回主体标记字串。

参考


函式:hw_DocumentContent()

Hyperwave 伺服器函式库

hw_DocumentContent

取得指定文件物件的内容。

语法: string hw_documentcontent(int hw_document);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得指定文件物件的内容。参数 hw_document 为文件物件。

参考


函式:hw_DocumentSetContent()

Hyperwave 伺服器函式库

hw_DocumentSetContent

重设指定文件物件的内容。

语法: boolean hw_documentsetcontent(int hw_document, string content);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来重新设定或者取代指定文件物件的内容。参数 hw_document 为文件物件。参数 content 即为中新的资料内容。成功则传回 true 值。

参考


函式:hw_DocumentSize()

Hyperwave 伺服器函式库

hw_DocumentSize

取得文件大小。

语法: int hw_documentsize(int hw_document);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得指定文件物件的内容大小，单位是位元组 (byte)。参数 hw_document 为文件物件。

参考


函式:hw_EditText()

Hyperwave 伺服器函式库

hw_EditText

更动文字文件。

语法: boolean hw_edittext(int connection, int hw_document);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来将纯文字文件送上 Hyperwave 伺服器上。参数 connection 为连线代码。参数 hw_document 为文件物件。本函式仅限纯文字文件使用。

参考

hw_PipeDocument()
           hw_Free_Document()
           hw_DocumentBodyTag()
           hw_DocumentSize()
           hw_OutputDocumen()  hw_GetText()


函式:hw_Error()

Hyperwave 伺服器函式库

hw_Error

取得错误代码。

语法: int hw_error(int connection);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得最后的错误代码。参数 connection 为和 Hyperwave 伺服器的连线代码。传回为最后的错误代码数字，若无错误，则传回 0。


函式:hw_ErrorMsg()

Hyperwave 伺服器函式库

hw_ErrorMsg

取得错误讯息。

语法: string hw_errormsg(int connection);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得最后的错误讯息。参数 connection 为和 Hyperwave 伺服器的连线代码。传回为最后的错误讯息，若无错误讯息，则传回 No Error 字串。


函式:hw_Free_Document()

Hyperwave 伺服器函式库

hw_Free_Document

释放文件使用的记忆体。

语法: boolean hw_free_document(int hw_document);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来释放指定文件所使用的记忆体。参数 hw_document 为指定的文件名称。


函式:hw_GetAnchors()

Hyperwave 伺服器函式库

hw_GetAnchors

取得文件的连结锚。

语法: array hw_getanchors(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得指定文件的连结锚 (ancher)。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。


函式:hw_GetAnchorsObj()

Hyperwave 伺服器函式库

hw_GetAnchorsObj

取得文件的连结锚记录。

语法: array hw_getanchorsobj(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得指定文件连结锚 (ancher) 的记录。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。


函式:hw_GetAndLock()

Hyperwave 伺服器函式库

hw_GetAndLock

取得并锁住物件。

语法: string hw_getandlock(int connection, int objectID);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得物件同时并锁住物件，锁住之后别的程式无法存取该物件，直到解除锁定为止。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。

参考


函式:hw_GetChildColl()

Hyperwave 伺服器函式库

hw_GetChildColl

取得子物件们的 ID。

语法: array hw_getchildcoll(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得子物件聚集 (collections) 的 ID。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。

参考


函式:hw_GetChildCollObj()

Hyperwave 伺服器函式库

hw_GetChildCollObj

取得子物件们的资料。

语法: array hw_getchildcollobj(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得子物件聚集 (collections) 的记录资料。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。

参考


函式:hw_GetChildDocColl()

Hyperwave 伺服器函式库

hw_GetChildDocColl

取得全部子文件聚集。

语法: array hw_getchilddoccoll(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得指定文件的子文件聚集。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。

参考


函式:hw_GetChildDocCollObj()

Hyperwave 伺服器函式库

hw_GetChildDocCollObj

取得全部子文件聚集记录。

语法: array hw_getchilddoccollobj(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得指定文件的子文件聚集记录。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。

参考


函式:hw_GetObject()

Hyperwave 伺服器函式库

hw_GetObject

取得物件。

语法: string hw_getobject(int connection, int objectID);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得物件。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。

参考

hw_GetAndLock()


函式:hw_GetObjectByQuery()

Hyperwave 伺服器函式库

hw_GetObjectByQuery

搜寻物件。

语法: array hw_getobjectbyquery(int connection, string query, int max_hits);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来搜寻伺服器中的物件，并传回物件资料阵列。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 query 为为搜寻的字串。参数 max_hits 表合于条件的最大笔数，若设为 -1 则表示没有限制。

参考

hw_GetObjectByQueryObj()


函式:hw_GetObjectByQueryColl()

Hyperwave 伺服器函式库

hw_GetObjectByQueryColl

搜寻聚集物件。

语法: array hw_getobjectbyquerycoll(int connection, int objectID, string query, int max_hits);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来搜寻伺服器中的物件聚集，并传回物件资料阵列。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。参数 query 为为搜寻的字串。参数 max_hits 表合于条件的最大笔数，若设为 -1 则表示没有限制。

参考

hw_GetObjectByQueryCollObj()


函式:hw_GetObjectByQueryCollObj()

Hyperwave 伺服器函式库

hw_GetObjectByQueryCollObj

搜寻聚集物件。

语法: array hw_getobjectbyquerycollobj(int connection, int objectID, string query, int max_hits);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来搜寻伺服器中的物件聚集，并传回物件记录阵列。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。参数 query 为为搜寻的字串。参数 max_hits 表合于条件的最大笔数，若设为 -1 则表示没有限制。

参考

hw_GetObjectByQueryColl()


函式:hw_GetObjectByQueryObj()

Hyperwave 伺服器函式库

hw_GetObjectByQueryObj

搜寻物件。

语法: array hw_getobjectbyqueryobj(int connection, string query, int max_hits);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来搜寻伺服器中的物件，并传回物件记录阵列。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 query 为为搜寻的字串。参数 max_hits 表合于条件的最大笔数，若设为 -1 则表示没有限制。

参考

hw_GetObjectByQuery()


函式:hw_GetParents()

Hyperwave 伺服器函式库

hw_GetParents

取得父物件的 ID。

语法: array hw_getparentsobj(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得父物件的 ID 值。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。


函式:hw_GetParentsObj()

Hyperwave 伺服器函式库

hw_GetParentsObj

取得父物件的资料。

语法: array hw_getparentsobj(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得父物件的资料记录。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。


函式:hw_GetRemote()

Hyperwave 伺服器函式库

hw_GetRemote

取得远端文件。

语法: int hw_getremote(int connection, int objectID);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得网路上远端机器的文件，透过 Hyperwave 闸道介面 (HGI, Hyperwave Gateway Interface) 取得 http、ftp 及部份资料库的文件资料。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。


函式:hw_GetRemoteChildren()

Hyperwave 伺服器函式库

hw_GetRemoteChildren

取得远端的子文件。

语法: [array|int] hw_getremotechildren(int connection, string object_record);

传回值: 阵列或整数

函式种类: 网路系统

内容说明

本函式用来取得网路上远端机器的子文件。若子文件数值为 1，则传回该文件本身；若子文件数超过 1，则传回物件记录阵列，更多的资讯可以参考 Hyperwave 程式设计手册。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 object_record 为指定的物件记录。

参考

hw_GetRemote()


函式:hw_GetSrcByDestObj()

Hyperwave 伺服器函式库

hw_GetSrcByDestObj

取得指定目的的文件内容。

语法: array hw_getsrcbydestobj(int connection, int objectID);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得网路上远端机器的子文件。若子文件数值为 1，则传回该文件本身；若子文件数超过 1，则传回物件记录阵列，更多的资讯可以参考 Hyperwave 程式设计手册。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。


函式:hw_GetText()

Hyperwave 伺服器函式库

hw_GetText

取得纯文字文件。

语法: int hw_gettext(int connection, int objectID, int [rootID]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得纯文字文件，无法开启其它格式的文件。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。参数 rootID 可省略，内定值为 0，表自动在锚 (ancher) 连结处加上适当的路径字串。

参考


函式:hw_GetUsername()

Hyperwave 伺服器函式库

hw_GetUsername

目前使用者名字。

语法: string hw_getusername(int connection);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得目前正在使用 Hyperwave 伺服器的使用者名字。参数 connection 为和 Hyperwave 伺服器的连线代码。


函式:hw_Identify()

Hyperwave 伺服器函式库

hw_Identify

使用者身份确认。

语法: void hw_identify(string username, string password);

传回值: 无

函式种类: 网路系统

内容说明

本函式用来确认使用者身份，只需在连线时认证即可。参数 username 及 password 分别为合法的帐号及密码。

参考

hw_Connect()


函式:hw_InCollections()

Hyperwave 伺服器函式库

hw_InCollections

检查物件聚集。

语法: array hw_incollections(int connection, array objids, array collids, int para);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来复制指定的物件。参数 connection 为连线代码。参数 objids 为待检查的物件阵列。参数 collids 为物件聚集。参数 para 为传回聚集，若设为 0，表 objids 全都包含于 collids；若设为 1，则表 objids 部份包含于 collids。


函式:hw_Info()

Hyperwave 伺服器函式库

hw_Info

连线资讯。

语法: string hw_info(int connection);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得连线资讯。参数 connection 为连线代码。传回字串为 <Serverstring>, <Host>, <Port>, <Username>, <Port of Client>, <Byte swapping> 的格式。


函式:hw_InsColl()

Hyperwave 伺服器函式库

hw_InsColl

插入聚集。

语法: int hw_inscoll(int connection, int objectID, array object_array);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可新增一个聚集。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。参数 object_array 为物件阵列。传回值为新聚集的代码。


函式:hw_InsDoc()

Hyperwave 伺服器函式库

hw_InsDoc

插入文件。

语法: int hw_insdoc(int connection, int parentID, string object_record, string [text]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来插入新文件。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 parentID 为指定的父物件 ID 值。参数 object_record 为欲插入的物件记录。参数 text 可省略，若设定为 text 则表示纯 (ASCII) 文字。传回值为新文件的代码。值得注意的是本函式通常只用来插入纯文字文件或物件记录，要插入任何格式的文件应用 hw_InsertDocument()

参考

hw_InsertDocument()


函式:hw_InsertDocument()

Hyperwave 伺服器函式库

hw_InsertDocument

上传文件。

语法: int hw_insertdocument(int connection, int parentID, int hw_document);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来上传任何格式的新文件。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 parentID 为指定的父物件 ID 值。参数 hw_document 为欲插入的文件。值得注意的是本函式上传文件前要先使用 hw_New_Document() 来建立新文件。

参考


函式:hw_InsertObject()

Hyperwave 伺服器函式库

hw_InsertObject

插入物件记录。

语法: int hw_insertobject(int connection, string object_record, string parameter);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来插入新物件，物件可以是任何合于 Hyperwave 规定的物件，详细资讯请参考 HG-CSP 文件。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 object_record 为欲插入的物件记录。参数 parameter 为特殊的参数，例如 invisible，进一步资讯也请参考 HG-CSP 文件。

参考


函式:hw_Modifyobject()

Hyperwave 伺服器函式库

hw_Modifyobject

修改物件记录。

语法: boolean hw_modifyobject(int connection, int object_to_change, array remove, array add, int [mode]);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式可用来移除、增加及修改物件。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 object_to_change 为待修改的物件。参数 remove 及 add 分别为要移除及加入的属性列示。参数 mode 通常省略，若要递回修改，则该参数设为 1。成功则传回 true。

使用范例

例一: 修改属性
<?php
// 之前的程式省略
$remarr = array("Name" => "books");
$addarr = array("Name" => "articles");
$hw_modifyobject($connect, $objid, $remarr, $addarr);
// 之后的程式省略
?>

例二: 新增属性
<?php
// 之前的程式省略
$remarr = array("Name" => 0);
$addarr = array("Name" => "articles");
$hw_modifyobject($connect, $objid, $remarr, $addarr);
// 之后的程式省略
?>

例三: 修改 title 属性
<?php
// 之前的程式省略
$remarr = array("Title" => "en:Books");
$addarr = array("Title" => "en:Articles");
$hw_modifyobject($connect, $objid, $remarr, $addarr);
// 之后的程式省略
?>

例四: 修改 title 属性
<?php
// 之前的程式省略
$remarr = array("Title" => array("en" => "Books"));
$addarr = array("Title" => array("en" => "Articles", "ge"=>"Artikel"));
$hw_modifyobject($connect, $objid, $remarr, $addarr);
// 之后的程式省略
?>

例五: 移除属性
<?php
// 之前的程式省略
$remarr = array("Title" => "");
$addarr = array("Title" => "en:Articles");
$hw_modifyobject($connect, $objid, $remarr, $addarr);
// 之后的程式省略
?>


函式:hw_Mv()

Hyperwave 伺服器函式库

hw_Mv

移动物件。

语法: void hw_mv(int connection, array objrec, int from, int dest);

传回值: 无

函式种类: 网路系统

内容说明

本函式用来复制指定的物件。参数 connection 为连线代码。参数 objrec 为待复制的物件代码阵列。参数 from 及 dest 分别为来源及目的的代码。

参考


函式:hw_New_Document()

Hyperwave 伺服器函式库

hw_New_Document

建立新文件。

语法: int hw_new_document(string object_record, string document_data, int document_size);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来建立新的 Hyperwave 文件。参数 object_record 为物件记录。参数 document_data 为文件资料。参数 document_size 为文件大小。值得注意的是本函式不能插入文件到 Hyperwave 伺服器上。

参考


函式:hw_Objrec2Array()

Hyperwave 伺服器函式库

hw_Objrec2Array

物件记录转为阵列。

语法: array hw_objrec2array(string object_record);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式将物件记录转换成物件阵列。参数 object_record 为物件记录。


函式:hw_OutputDocument()

Hyperwave 伺服器函式库

hw_OutputDocument

输出文件。

语法: boolean hw_outputdocument(int hw_document);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式将文件输出到标准输出设备上，输出的文件不包含内文标记 (BODY Tag)。成功则传回 true。


函式:hw_pConnect()

Hyperwave 伺服器函式库

hw_pConnect

连上 Hyperwave 伺服器。

语法: int hw_pconnect(string host, int port, string [username], string [password]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来维持与 Hyperwave 伺服器的连线。参数 host 为 Hyperwave 伺服器。参数 port 为连线的 port。参数 username 与 password 可省略，分别为连线使用的帐号及密码，若省略 username 则为匿名使用。成功则传回连线代码，供其它函式使用，失败则传回 false。若已连线上，则使用前回连线的资源。

参考


函式:hw_PipeDocument()

Hyperwave 伺服器函式库

hw_PipeDocument

取得文件。

语法: int hw_pipedocument(int connection, int objectID);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可取回任何格式的文件。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。

参考


函式:hw_Root()

Hyperwave 伺服器函式库

hw_Root

取得根物件代码。

语法: int hw_root();

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得根物件代码。


函式:hw_Unlock()

Hyperwave 伺服器函式库

hw_Unlock

取消锁定。

语法: boolean hw_unlock(int connection, int objectID);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式取消锁定指定的物件。参数 connection 为和 Hyperwave 伺服器的连线代码。参数 objectID 为指定的物件 ID 值。

参考

hw_GetAndLock()


函式:hw_Who()

Hyperwave 伺服器函式库

hw_Who

列出目前使用者。

语法: array hw_who(int connection);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来列出目前正在使用 Hyperwave 伺服器的使用者。参数 connection 为和 Hyperwave 伺服器的连线代码。传回阵列资料包括帐号、姓名、使用时间....等等。


函式:ibase_bind()

InterBase 资料库函式库

ibase_bind

连结 PHP 变数到 InterBase 参数。

语法: boolean ibase_bind(int query);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式将 PHP 变数与 InterBase 的 SQL 参数系结在一起。SQL 参数 (SQL parameter) 必须是类似 ":name" 的型式。若成功则传回 true，反之传回 false。


函式:ibase_close()

InterBase 资料库函式库

ibase_close

关闭 InterBase 伺服器连线。

语法: boolean ibase_close(int link_identifier);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式关闭与 InterBase 资料库伺服器的连线。若无指定参数 link_identifier 则会关闭最后的一笔连线。用 ibase_pconnect() 连线则无法使用本函式关闭。实际上本函式不是一定需要的，当 PHP 整页程式结束后，将会自动关闭与资料库的非永久性 (non-persistent) 连线。成功传回 true、失败传回 false 值。

参考


函式:ibase_connect()

InterBase 资料库函式库

ibase_connect

开启 InterBase 伺服器连线。

语法: int ibase_connect(string database, string [username], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式建立与 InterBase 伺服器的连线。参数 database 为欲使用的资料库名称。参数 username 及 password 可省略，分别为连线的帐号及密码。

参考


函式:ibase_execute()

InterBase 资料库函式库

ibase_execute

执行 SQL 的指令区段。

语法: int ibase_execute(int query);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来执行经过 ibase_prepare() 处理过的 SQL 指令。


函式:ibase_fetch_row()

InterBase 资料库函式库

ibase_fetch_row

传回单列的各栏位。

语法: array ibase_fetch_row(int result);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 之单列拆到阵列变数中。阵列的索引是数字索引，第一个的索引值是 0。若 result 没有资料，则传回 false 值。


函式:ibase_free_query()

InterBase 资料库函式库

ibase_free_query

释放查询指令占用记忆体。

语法: boolean ibase_free_query(int query);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式可以释放目前 InterBase 资料库 query 指令所占用的记忆体。


函式:ibase_free_result()

InterBase 资料库函式库

ibase_free_result

释放传回占用记忆体。

语法: boolean ibase_free_result(int result);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式可以释放目前 InterBase 资料库 query 传回所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才可能用到本函式。PHP 程式会在结束时自动释放。


函式:ibase_pconnect()

InterBase 资料库函式库

ibase_pconnect

保持 InterBase 伺服器连线。

语法: int ibase_pconnect(string database, string [username], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式建立与 InterBase 伺服器长期连线。参数 database 为欲使用的资料库名称。参数 username 及 password 可省略，分别为连线的帐号及密码。本函式在 PHP 程式结束时并不会关闭资料库，而等待下一次的连线，可以增加与资料库连线速度。

参考


函式:ibase_prepare()

InterBase 资料库函式库

ibase_prepare

分析 SQL 语法。

语法: boolean ibase_prepare(int link_identifier, string query);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式可用来分析 SQL 语法是否有错误，以供资料库查询。参数 link_identifier 为开启的 ID。参数 query 为欲对资料库下达的 SQL 字串。


函式:ibase_query()

InterBase 资料库函式库

ibase_query

送出一个 query 字串。

语法: int ibase_query(int link_identifier, string query);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式送出 query 字串供 InterBase 做相关的处理或者执行。参数 link_identifier 为开启的 ID。参数 query 为欲对资料库下达的 SQL 字串。


函式:ibase_timefmt()

InterBase 资料库函式库

ibase_timefmt

设定时间格式。

语法: int ibase_timefmt(string format);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来设定 SQL 指令传回字串有关时间日期部份的字串格式。参数 format 为欲设定时间的格式。


函式:ifx_affected_rows()

Informix 资料库函式库

ifx_affected_rows

得到 Informix 最后操作影响的列数目。

语法: int ifx_affected_rows(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可得到 Informix 最后查询操作 INSERT、UPDATE 或 DELETE 所影响的列 (row) 数目。若最后使用的是 SELECT，则用本函式得到的数目为估计值，而非精确的数目，欲得到 SELECT 传回的数目需使用 ifx_num_rows() 函式。

使用范例

本例为部份程式

<?php
$rid = ifx_prepare ("select * from userinfo where name like " . $name, $connid);
if (! $rid) {
// 错误处理的部份
}
$rowcount = ifx_affected_rows ($rid);
if ($rowcount > 1000) {
printf ("传回资料太多，共 %d 笔\n<br>", $rowcount);
die ("请重新执行 SQL 指令<br>\n");
}
?>

参考

ifx_num_rows()


函式:ifx_blobinfile_mode()

Informix 资料库函式库

ifx_blobinfile_mode

设定长位元物件模式。

语法: boolean ifx_blobinfile_mode(int mode);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来设定所有 select 的 SQL 指令用到的长位元 (blob) 物件模式内定值。参数 mode 的值为储存 blob 资料的地点， 0 表在记忆体；1 表在档案中。执行成功则传回 true 值，失败传回 false 值。


函式:ifx_byteasvarchar()

Informix 资料库函式库

ifx_byteasvarchar

设定位元组模式内定值。

语法: boolean ifx_byteasvarchar(int mode);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来设定所有 select 的 SQL 指令用到的位元组 (byte) 物件模式内定值。参数 mode 的值为 0 表传回 blob 的代码；1 表传回 varchar 字串。执行成功则传回 true 值，失败传回 false 值。


函式:ifx_close()

Informix 资料库函式库

ifx_close

关闭 Informix 伺服器连线。

语法: boolean ifx_close(int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式关闭与 Informix 资料库伺服器的连线。若无指定参数 link_identifier 则会关闭最后的一笔连线。用 ifx_pconnect() 连线则无法使用本函式关闭。本函式可以省略，当 PHP 整页程式结束后，将会自动关闭与资料库的非永久性 (non-persistent) 连线。传回值均为 true。


函式:ifx_connect()

Informix 资料库函式库

ifx_connect

开启 Informix 伺服器连线。

语法: int ifx_connect(string [database], string [userid], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式建立与 Informix 伺服器的连线。其中所有的参数都可省略。若全部参数都省略时，使用系统的 php3.ini 或是 php.ini (视 PHP 版本决定) 中 ifx.default_host 指定的机器，或是环境变数 $INFORMIXSERVER；ifx.default_user 为使用者帐号；ifx.default_password 为使用者密码。而参数 database、userid 及 password 分别为资料库的名字、登入帐号及使用密码。当然，在使用本函式之后，尽早使用 ifx_close() 关闭 Informix 资料库比较好。连线成功则传回连线代码，失败则传回 false 值。

使用范例

本例只有连上资料库，什么事都没做。

<?php
$conn_id = ifx_pconnect("mydb@ol_srv1", "imyself", "mypassword");
ifx_close($conn_id);
?>

参考


函式:ifx_copy_blob()

Informix 资料库函式库

ifx_copy_blob

复制长位元物件。

语法: int ifx_copy_blob(int bid);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来复制长位元 (blob) 物件。参数 bid 为 blob 物件代码。成功则传回新的长位元物件代码，失败传回 false 值。


函式:ifx_create_blob()

Informix 资料库函式库

ifx_create_blob

建立长位元物件。

语法: int ifx_create_blob(int type, int mode, string param);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来建立长位元 (blob) 物件。参数 type 表示 blob 的型态，1 表文字资料；0 表位元资料。参数 mode 为长位元资料的存放处，0 表在记忆体；1 表在档案中。参数 param 为 blob 的内容，若 mode 为 0 则为记忆体指标；若 mode 为 1 则为档名。成功则传回长位元的物件代码，失败传回 false 值。


函式:ifx_create_char()

Informix 资料库函式库

ifx_create_char

建立字元物件。

语法: int ifx_create_char(string param);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来建立字元 (char) 物件。参数 param 为字元的内容。成功则传回字元的物件代码，失败传回 false 值。


函式:ifx_do()

Informix 资料库函式库

ifx_do

执行已准备 query 字串。

语法: boolean ifx_do(int result_id);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来执行已经由 ifx_prepare() 函式所准备的字串。参数 result_id 即为 ifx_prepare() 所传回的待执行代码。成功则传回 true，失败传回 false 值。


函式:ifx_error()

Informix 资料库函式库

ifx_error

取得 Informix 最后的错误。

语法: string ifx_error(void);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 Informix 资料库最后的错误资讯，本函式无须加入任何参数。传回的字串如以下的格式

X [SQLSTATE=aa bbb SQLCODE=c]

其中的 X 代表错误讯息的种类，见下表

字元 | 代表种类
空格 | 无错误
E | 错误 (Error)
N | 无资料
W | 警告 (Warning)
? | 其它未定义

至于 aa、bbb、c 表示数字资料，并分别为二位、三位及一位数。更多有关细节参考 Informix 手册中有关 SQLSTATE 与 SQLCODE 的资讯。

参考

ifx_errormsg()


函式:ifx_errormsg()

Informix 资料库函式库

ifx_errormsg

取得 Informix 最后错误讯息。

语法: string ifx_errormsg(int [errorcode]);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 Informix 资料库最后的错误讯息字串。参数 errorcode 代表错误代码。

使用范例

本例为部份程式

<?php
printf("%s\n<br>", ifx_errormsg(-201));
?>

参考

ifx_error()


函式:ifx_fetch_row()

Informix 资料库函式库

ifx_fetch_row

传回单列的各栏位。

语法: array ifx_fetch_row(int result_id, mixed [position]);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 之单列拆到阵列变数中。阵列的索引是数字索引，第一个的索引值是 0。若 result 没有资料，则传回 false 值。参数 position 可省略，是所谓的卷动游标 (scroll cursor)，可能值为：NEXT、PREVIOUS、CURRENT、FIRST 或者 LAST；亦可能为数字，表示指定为第几列。

使用范例

以下的范例为连上 Informix 资料库后的动作

<?php
$rid = ifx_prepare("select * from emp where name like ".$name, $connid, IFX_SCROLL);
if (! $rid) {
// 错误处理
}
$rowcount = ifx_affected_rows($rid);
if ($rowcount > 1000) {
printf ("传回资料太多，共 %d 笔\n<br>", $rowcount);
die ("请重新执行 SQL 指令<br>\n");
}
if (! ifx_do ($rid)) {
// 错误处理
}
$row = ifx_fetch_row($rid, "NEXT");
while (is_array($row)) {
for(reset($row); $fieldname=key($row); next($row)) {
$fieldvalue = $row[$fieldname];
printf("%s = %s,", $fieldname, $fieldvalue);
}
printf("\n<br>");
$row = ifx_fetch_row($rid, "NEXT");
}
ifx_free_result($rid);
?>


函式:ifx_fieldproperties()

Informix 资料库函式库

ifx_fieldproperties

列出 Informix 的 SQL 栏位属性。

语法: array ifx_fieldproperties(int result_id);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式可以获得 Informix 的 SQL 指令传回栏位的属性。参数 result_id 是经过 ifx_query() 或 ifx_prepare() 的传回代号。

使用范例

本例为程式的一部份

<?php
$properties = ifx_fieldtypes($resultid);
if (! isset($properties)) {
// 错误处理
}
for ($i = 0; $i < count($properties); $i++) {
$fname = key($properties);
printf("%s:\t type = %s\n", $fname, $properties[$fname]);
next($properties);
}
?>


函式:ifx_fieldtypes()

Informix 资料库函式库

ifx_fieldtypes

列出 Informix 的 SQL 栏位。

语法: array ifx_fieldtypes(int result_id);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式可以获得 Informix 的 SQL 指令传回的栏位。参数 result_id 是经过 ifx_query() 或 ifx_prepare() 的传回代号。

使用范例

本例为程式的一部份

<?php
$types = ifx_fieldtypes($resultid);
if (! isset($types)) {
// 错误处理
}
for ($i = 0; $i < count($types); $i++) {
$fname = key($types);
printf("%s :\t 型态为: %s\n", $fname, $types[$fname]);
next($types);
}
?>


函式:ifx_free_blob()

Informix 资料库函式库

ifx_free_blob

删除长位元物件。

语法: boolean ifx_free_blob(int bid);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来删除长位元 (blob) 物件。参数 bid 为 blob 物件代码。执行成功则传回 true 值，失败传回 false 值。


函式:ifx_free_char()

Informix 资料库函式库

ifx_free_char

删除字元物件。

语法: boolean ifx_free_char(int bid);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来删除字元 (char) 物件。参数 bid 为字元的物件代码。执行成功则传回 true 值，失败传回 false 值。


函式:ifx_free_result()

Informix 资料库函式库

ifx_free_result

释放传回占用记忆体。

语法: boolean ifx_free_result(int result_id);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式可以释放目前 Informix 资料库 query 传回所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式，因为 PHP 程式会在结束时自动释放。发生错误则传回 false 值。


函式:ifx_free_slob()

Informix 资料库函式库

ifx_free_slob

删除 slob 物件。

语法: boolean ifxus_free_slob(int bid);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来删除 slob 物件。参数 bid 为 slob 物件代码。执行成功则传回 true 值，失败传回 false 值。


函式:ifx_get_blob()

Informix 资料库函式库

ifx_get_blob

取得长位元物件。

语法: string ifx_get_blob(int bid);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得长位元 (blob) 物件。参数 bid 为长位元的物件代码。传回值为 blob 物件的内容。


函式:ifx_get_char()

Informix 资料库函式库

ifx_get_char

取得字元物件。

语法: string ifx_get_char(int bid);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得字元 (char) 物件。参数 bid 为字元的物件代码。传回值为字元的内容。


函式:ifx_getsqlca()

Informix 资料库函式库

ifx_getsqlca

取得 query 后的 sqlca 资讯。

语法: array ifx_getsqlca(int result_id);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式可得到 Informix 最后查询操作后的 sqlca 结构 (struct) 中的相关资讯。参数 result_id 是经过 ifx_query() 及 ifx_prepare() 的传回代号。本函式传回的阵列其实就是 sqlca.sqlerrd[0] 到 sqlca.sqlerrd[5] 等六个元素的阵列。

使用范例

下例为部份程式

<?php
$qid = ifx_query("insert into sometable values(0, '2nd column', 'another column' ", $connid);
if (! $qid) {
// 错误处理
}
$sqlca = ifx_getsqlca ($qid);
$serial_value = $sqlca["sqlerrd1"];
echo "插入列序号为: " . $serial_value<br>n";
?>


函式:ifx_htmltbl_result()

Informix 资料库函式库

ifx_htmltbl_result

将 query 传回资料转成 HTML 表格。

语法: int ifx_htmltbl_result(int result_id, string [html_table_options]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来将 query 查询结果格式化成 HTML 标记格式的表格形式。参数 html_table_options 可省略，为 <table> 标记中的参数选项。成功则传回列数，失败则传回 false 值。

使用范例

以下的范例中，<table> 标记的参数设表格边宽为 2。

<?php
$rid = ifx_prepare("select * from emp where name like ".$name, $connid, IFX_SCROLL);
if (! $rid) {
// 错误处理
}
$rowcount = ifx_affected_rows($rid);
if ($rowcount > 1000) {
printf ("传回资料太多，共 %d 笔\n<br>", $rowcount);
die ("请重新执行 SQL 指令<br>\n");
}
if (! ifx_do($rid) {
// 错误处理
}
ifx_htmltbl_result($rid, "border=\"2\"");
ifx_free_result($rid);
?>


函式:ifx_nullformat()

Informix 资料库函式库

ifx_nullformat

设定空字元模式内定值。

语法: boolean ifx_nullformat(int mode);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来设定所有 select 的 SQL 指令用到的空字元 (null) 物件模式内定值。参数 mode 的值为 0 表传回 "" (空字串)；1 表传回 NULL 字串。执行成功则传回 true 值，失败传回 false 值。


函式:ifx_num_fields()

Informix 资料库函式库

ifx_num_fields

取得传回栏位的数目。

语法: int ifx_num_fields(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回栏位的数目。参数 result_id 是经过 ifx_query() 或 ifx_prepare() 的传回代号。若发生错误则传回 false 值。


函式:ifx_num_rows()

Informix 资料库函式库

ifx_num_rows

取得传回列的数目。

语法: int ifx_num_rows(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到 Informix 资料库传回列的数目。参数 result_id 是经过 ifx_query() 或 ifx_do() 的传回代号。若发生错误则传回 false 值。


函式:ifx_pconnect()

Informix 资料库函式库

ifx_pconnect

开启 Informix 伺服器长期连线。

语法: int ifx_pconnect(string [database], string [userid], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式与 ifx_connect() 很类似。不同的地方在于使用本函式开启资料库时，程式会先寻找是否曾经执行过本函式，若执行过则传回先前执行的 ID。另一个不同的地方是本函式无法使用 ifx_close() 关闭资料库。

参考


函式:ifx_prepare()

输入待寻字串
<?php
require( "http://php.wilson.gs"); // 回首页
echo "http://php.wilson.gs/bible/function.php : 函式:ifx_prepare()";

 函式:ifx_prepare()

Informix 资料库函式库

ifx_prepare

准备 query 字串。

语法: int ifx_prepare(string query, int link_identifier, int [cursor_type], mixed blobidarray);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式准备 query 字串供 Informix 接着做相关的处理。若没有指定 link_identifier 参数，则程式会自动寻找最近开启的 ID。参数 cursor_type 可省略，其值有 IFX_SCROLL 与 IFX_HOLD 二种。若有 BLOB 的栏位要加在 query 指令之中，可使用 blobidarray 参数，指定 BLOB 的代码。传回值可供 ifx_do() 使用。


函式:ifx_query()

Informix 资料库函式库

ifx_query

送出一个 query 字串。

语法: int ifx_query(string query, int [link_identifier], int [cursor_type], mixed [blobidarray]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式送出 query 字串供 Informix 做相关的处理动作。若没有指定 link_identifier 参数，则程式会自动寻找最近开启的 ID。参数 cursor_type 可省略，其值有 IFX_SCROLL 与 IFX_HOLD 二种。若有 BLOB 的栏位要加在 query 指令之中，可使用 blobidarray 参数，指定 BLOB 的代码。

使用范例

例一:

<?php
// 之前的程式省略
ifx_textasvarchar(1); // 使用文字模式 (text mode) 的 blobs
$res_id = ifx_query("select * from orders", $conn_id);
if (! $res_id) {
printf("无法取出 orders 资料表 : %s\n<br>%s<br>\n", ifx_error());
ifx_errormsg();
die;
}
ifx_htmltbl_result($res_id, "border=\"1\"");
ifx_free_result($res_id);
// 之后的程式省略
?>

例二:

<?php
// 之前的程式省略
//
// 为二进位及文字建立 BLOB 代码
$textid = ifx_create_blob(0, 0, "Text column in memory");
$byteid = ifx_create_blob(1, 0, "Byte column in memory");

$blobidarray[] = $textid;
$blobidarray[] = $byteid;

$query = "insert into catalog (stock_num, manu_code, " ."cat_descr,cat_picture) values(1,'HRO',?,?)";
$res_id = ifx_query($query, $conn_id, $blobidarray);
if (! $res_id) {
// 错误处理
}
ifx_free_result($res_id);
// 之后程式省略
?>


函式:ifx_textasvarchar()

Informix 资料库函式库

ifx_textasvarchar

设定文字模式内定值。

语法: boolean ifx_textasvarchar(int mode);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来设定所有 select 的 SQL 指令用到的文字 (text) 物件模式内定值。参数 mode 的值为 0 表传回 blob 的代码；1 表传回 varchar 字串。执行成功则传回 true 值，失败传回 false 值。


函式:ifx_update_blob()

Informix 资料库函式库

ifx_update_blob

更改长位元物件。

语法: boolean ifx_update_blob(int bid, string content);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来更改长位元 (blob) 物件。参数 bid 为 blob 物件代码。参数 content 为欲使用新的 blob 资料。执行成功则传回 true 值，失败传回 false 值。


函式:ifx_update_char()

Informix 资料库函式库

ifx_update_char

更改字元物件。

语法: boolean ifx_update_char(int bid, string content);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来更改字元 (char) 物件。参数 bid 为字元的物件代码。参数 content 为欲使用的新字元。执行成功则传回 true 值，失败传回 false 值。


函式:ifxus_close_slob()

Informix 资料库函式库

ifxus_close_slob

删除 slob 物件。

语法: boolean ifxus_close_slob(int bid);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来删除 slob 物件。参数 bid 为 slob 物件代码。执行成功则传回 true 值，失败传回 false 值。


函式:ifxus_create_slob()

Informix 资料库函式库

ifxus_create_slob

建立 slob 物件。

语法: int ifxus_create_slob(int mode);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来建立 slob 物件。参数 mode 值如下表

数值 | 常数
1 | LO_RDONLY
2 | LO_WRONLY
4 | LO_APPEND
8 | LO_RDWR
16 | LO_BUFFER
32 | LO_NOBUFFER

当然也 mode 可以直接使用常数值，如 IFX_LO_RDONLY。若有需要，可使用数字相加，使 mode 值更有变化。成功则传回 slob 的物件代码，失败传回 false 值。


函式:ifxus_open_slob()

Informix 资料库函式库

ifxus_open_slob

开启 slob 物件。

语法: int ifxus_open_slob(long bid, int mode);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启 slob 物件。参数 bid 为 slob 物件代码。参数 mode 值如下表

数值 | 常数
1 | LO_RDONLY
2 | LO_WRONLY
4 | LO_APPEND
8 | LO_RDWR
16 | LO_BUFFER
32 | LO_NOBUFFER

当然也 mode 可以直接使用常数值，如 IFX_LO_RDONLY。若有需要，可使用数字相加，使 mode 值更有变化。成功则传回 slob 的物件代码，失败传回 false 值。


函式:ifxus_read_slob()

Informix 资料库函式库

ifxus_read_slob

读取指定数目的 slob 物件。

语法: string ifxus_read_slob(long bid, long nbytes);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来读取指定位元数的 slob 物件。参数 bid 为 slob 物件代码。参数 nbytes 为位元组数目。执行成功则传回 slob 部份字串，失败传回 false 值。


函式:ifxus_seek_slob()

Informix 资料库函式库

ifxus_seek_slob

设定目前档案或找寻位置。

语法: int ifxus_seek_blob(long bid, int mode, long offset);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来设定目前档案或找寻档案的位置。参数 bid 为 slob 物件代码。参数 mode 的值如下：0 表 LO_SEEK_SET、1 表 LO_SEEK_CUR、2 表 LO_SEEK_END。参数 offset 为位元组偏移值。执行成功则传回代码值，失败传回 false 值。


函式:ifxus_tell_slob()

Informix 资料库函式库

ifxus_tell_slob

传回目前档案或找寻位置。

语法: int ifxus_tell_slob(long bid);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式传回目前档案或者找寻档案的位置。参数 bid 为 slob 物件代码。执行成功则传回代码值，失败传回 false 值。


函式:ifxus_write_slob()

Informix 资料库函式库

ifxus_write_slob

将字串写入 slob 物件中。

语法: int ifxus_write_slob(long bid, string content);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式将指定字串写入 slob 物件之中。参数 bid 为 slob 物件代码。参数 content 为待写入字串。执行成功则传回写入字元数，失败传回 false 值。


函式:ignore_user_abort()

杂项函式库

ignore_user_abort

连线中断后程式是否执行。

语法: int ignore_user_abort(int [setting]);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式设定或取得使用端连线中断后，PHP 程式是否仍继续执行。内定值为中断连线后就停止执行。在 PHP 设定档中 (php3.ini/php.ini) 的 ignore_user_abort 选项就是设定处。本功能在 PHP 3.0.7 版之后才开始提供。


函式:ImageArc()

图形处理函式库

ImageArc

画弧线。

语法: int imagearc(int im, int cx, int cy, int w, int h, int s, int e, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来画弧线。原点坐标 (0,0) 为图片的左上角，参数 cx、cy 为椭圆心坐标，参数 w 为水平轴长，参数 h 为垂直轴长，参数 s 及 e 分别为起始角与结束角，参数 col 为弧线的颜色。参数 im 表示图形的 handle。


函式:ImageChar()

图形处理函式库

ImageChar

写出横向字元。

语法: int imagechar(int im, int font, int x, int y, string c, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来书写横向的字元。原点坐标 (0,0) 为图片的左上角，参数 font 表示字体的大小，从最小的 1 起，参数 x、y 是写入字元的坐标值，参数 c 为欲写出的字元，参数 col 为字的颜色。参数 im 表示图形的 handle。

参考

ImageLoadFont()


函式:ImageCharUp()

图形处理函式库

ImageCharUp

写出直式字元。

语法: int imagecharup(int im, int font, int x, int y, string c, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来书写直式的字元。原点坐标 (0,0) 为图片的左上角，参数 font 表示字体的大小，从最小的 1 起，参数 x、y 是写入字元的坐标值，参数 c 为欲写出的字元，参数 col 为字的颜色。参数 im 表示图形的 handle。

参考

ImageLoadFont()


函式:ImageColorAllocate()

图形处理函式库

ImageColorAllocate

匹配颜色。

语法: int imagecolorallocate(int im, int red, int green, int blue);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来匹配图形的颜色，供其它绘图函式使用。参数 im 表示图形的 handle。参数 red、green、blue 是色彩三原色，其值从 0 至 255。

使用范例

<?
$white = ImageColorAllocate($im, 255,255,255);
$black = ImageColorAllocate($im, 0,0,0);
?>


函式:ImageColorAt()

图形处理函式库

ImageColorAt

取得图中指定点颜色的索引值。

语法: int imagecolorat(int im, int x, int y);

传回值: 整数

函式种类: 图形处理

内容说明

本函式可取得图形中某指定点的颜色索引值 (index)。

参考


函式:ImageColorClosest()

图形处理函式库

ImageColorClosest

计算色表中与指定颜色最接近者。

语法: int imagecolorclosest(int im, int red, int green, int blue);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来计算调色盘中与指定 RGB 颜色最接近的颜色。参数 red、green、blue 分别为红、绿、蓝三原色，也就是所谓的 RGB 值。

参考

ImageColorExact()


函式:ImageColorExact()

图形处理函式库

ImageColorExact

计算色表上指定颜色索引值。

语法: int imagecolorexact(int im, int red, int green, int blue);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来计算调色盘中指定 RGB 颜色的色素索引值。参数 red、green、blue 分别为红、绿、蓝三原色，也就是所谓的 RGB 值。若调色盘中没有指定的颜色，则传回 -1。

参考

ImageColorClosest()


函式:ImageColorResolve()

图形处理函式库

ImageColorResolve

计算色表上指定或最接近颜色的索引值。

语法: int imagecolorresolve(int im, int red, int green, int blue);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来计算调色盘中指定 RGB 颜色的色素索引值。参数 red、green、blue 分别为红、绿、蓝三原色，也就是所谓的 RGB 值。若无指定颜色则取得最接近的颜色。无论如何本函式都会有索引值传回。

参考


函式:ImageColorSet()

图形处理函式库

ImageColorSet

设定色表上指定索引的颜色。

语法: boolean imagecolorset(int im, int index, int red, int green, int blue);

传回值: 布林值

函式种类: 图形处理

内容说明

本函式用来设定调色盘上指定索引的颜色值。参数 index 为索引值。参数 red、green、blue 分别为红、绿、蓝三原色，也就是所谓的 RGB 值。此函式适合将图片上某颜色改掉，即利用索引的颜色更改图片颜色。

参考

ImageColorAt()


函式:ImageColorsForIndex()

图形处理函式库

ImageColorsForIndex

取得色表上指定索引的颜色。

语法: array imagecolorsforindex(int im, int index);

传回值: 阵列

函式种类: 图形处理

内容说明

本函式用来取得调色盘上指定索引的颜色值。参数 index 为索引值。阵列传回值分别为红、绿、蓝三原色的值。

参考


函式:ImageColorsTotal()

图形处理函式库

ImageColorsTotal

计算图的颜色数。

语法: int imagecolorstotal(int im);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来计算图片的调色盘有几种不同的颜色。

参考


函式:ImageColorTransparent()

图形处理函式库

ImageColorTransparent

指定透明背景色。

语法: int imagecolortransparent(int im, int [col]);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来指定某色为透明背景。参数 im 为使用 imagecreate() 打开图形的 handle。参数 col 为 ImageColorAllocate() 所匹配的颜色。传回值为新的透明背景色。


函式:ImageCopyResized()

图形处理函式库

ImageCopyResized

复制新图并调整大小。

语法: int imagecopyresized(int dst_im, int src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH);

传回值: 整数

函式种类: 图形处理

内容说明

本函式可复制新图，并重新调整图片的大小尺寸。参数都是目的在前，来源在后。参数 dst_im 及 src_im 为图片的 handle。参数 dstX、dstY、srcX、srcY 分别为目的及来源的坐标。参数 dstW、dstH、srcW、srcH 分别为来源及目的的宽及高，若欲调整新图的尺寸就在这儿设定。


函式:ImageCreate()

图形处理函式库

ImageCreate

建立新图。

语法: int imagecreate(int x_size, int y_size);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来建立一张全空的图形。参数 x_size、y_size 为图形的尺寸，单位为像素 (pixel)。


函式:ImageCreateFromGIF()

图形处理函式库

ImageCreateFromGIF

取出 GIF 图型。

语法: int imagecreatefromgif(string filename);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来取出一张 GIF 格式图形，通当取出当背景或者基本的画布样本使用。参数 filename 可以是本地端的档案，也可以是网路的 URL 位址。传回值为 GIF 的档案代码，可供其它的函式使用。本函式产生的 GIF 图，由于有版权的问题，因此在商业上的使用还要多加考量。


函式:ImageCreateFromPNG()

图形处理函式库

ImageCreateFromPNG

取出 PNG 图型。

语法: int imagecreatefrompng(string filename);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来取出一张 PNG 格式图形，通当取出当背景或者基本的画布样本使用。参数 filename 可以是本地端的档案，也可以是网路的 URL 位址。传回值为 PNG 的档案代码，可供其它的函式使用。本函式在 PHP 3.0.13 版之后才支援。


函式:ImageDashedLine()

图形处理函式库

ImageDashedLine

绘虚线。

语法: int imagedashedline(int im, int x1, int y1, int x2, int y2, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将在图形上画出一条虚线。从 x1、y1 连接到 x2、y2，原点 (0,0) 为图形的左上角。参数 col 为虚线的颜色。

参考

ImageLine()


函式:ImageDestroy()

图形处理函式库

ImageDestroy

结束图形。

语法: int imagedestroy(int im);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将图片 handle 解构，释于记忆体空间。参数 im 为 ImageCreate() 所建立的图片 handle。


函式:ImageFill()

图形处理函式库

ImageFill

图形着色。

语法: int imagefill(int im, int x, int y, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将图片坐标 (x,y) 所在的区域着色。参数 col 表示欲涂上的颜色。


函式:ImageFilledPolygon()

图形处理函式库

ImageFilledPolygon

多边形区域着色。

语法: int imagefilledpolygon(int im, array points, int num_points, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将图片的封闭多边形区域着色。参数 points 为阵列，代表多边形区域，阵列的偶数元素为 X 坐标，奇数元素为 Y 坐标，例如 points[0] = x0、points[1] = y0、points[2] = x1、points[3] = y1。参数 num_points 为多边形的转折点数目。参数 col 表示欲涂上的颜色。


函式:ImageFilledRectangle()

图形处理函式库

ImageFilledRectangle

矩形区域着色。

语法: int imagefilledrectangle(int im, int x1, int y1, int x2, int y2, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将图片的封闭长方形区域着色。参数 x1、y1 及 x2、y2 分别为矩形对角线的坐标。参数 col 表示欲涂上的颜色。


函式:ImageFillToBorder()

图形处理函式库

ImageFillToBorder

指定颜色区域内着色。

语法: int imagefilltoborder(int im, int x, int y, int border, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将图片中指定的颜色做为边界，着色在其中的封闭区域之中。参数 x、y 为着色区内的坐标，原点 (0,0) 为图形的左上角。参数 border 为颜色值，表填入颜色的边界范围。参数 col 表示欲涂上的颜色。


函式:ImageFontHeight()

图形处理函式库

ImageFontHeight

取得字型的高度。

语法: int imagefontheight(int font);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来取得指定字型的高度，单位为像素 (pixel)。

参考


函式:ImageFontWidth()

图形处理函式库

ImageFontWidth

取得字型的宽度。

语法: int imagefontwidth(int font);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来取得指定字型的宽度，单位为像素 (pixel)。

参考


函式:ImageGIF()

图形处理函式库

ImageGIF

建立 GIF 图型。

语法: int imagegif(int im, string [filename]);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来建立一张 GIF 格式图形。参数 im 为使用 ImageCreate() 所建立的图片代码。参数 filename 可省略，若无本参数 filename，则会将图片指接送到浏览器端，记得在送出图片之前要先送出使用 Content-type: image/gif 的标头字串 (header) 到浏览器端，以顺利传输图片。若要使用透明背景的 GIF 图，也就是 GIF89a 的格式，需要先使用 ImageColorTransparent() 设定透明背景。本函式产生的 GIF 图，由于有版权的问题，因此在商业上的使用还要多加考量。


函式:ImageInterlace()

图形处理函式库

ImageInterlace

使用交错式显示与否。

语法: int imageinterlace(int im, int [interlace]);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来决定图片是否使用交错式显示 (interlace)。欲使用交错式显示，则将参数 interlace 值设为 1。不想使用交错式显示图形则将之设为 0。传回值 1 表示已设定成交错式、0 表示已设成非交错式。


函式:ImageLine()

图形处理函式库

ImageLine

绘实线。

语法: int imageline(int im, int x1, int y1, int x2, int y2, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将在图形上画出一条实线。从 x1、y1 连接到 x2、y2，原点 (0,0) 为图形的左上角。参数 col 为实线的颜色。

参考

ImageDashedLine()


函式:ImageLoadFont()

图形处理函式库

ImageLoadFont

载入点阵字型。

语法: int imageloadfont(string file);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来载入使用者自订的点阵字型。传回值为字型的代号，此值为大于 5 的整数。字型档的格式如表

byte偏移 | 型态 | 说明
0-3 | int | 档案中字元的数目
4-7 | int | 字型的启始 ASCII 字元，例如从 ASCII 32 的空白开始
8-11 | int | 字元的宽度
12-15 | int | 字元的高度
16以后 | char | 字元的位元值，也就是点阵的内容

参考


函式:ImagePNG()

图形处理函式库

ImagePNG

建立 PNG 图型。

语法: int imagepng(int im, string [filename]);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来建立一张 PNG 格式图形。参数 im 为使用 ImageCreate() 所建立的图片代码。参数 filename 可省略，若无本参数 filename，则会将图片指接送到浏览器端，记得在送出图片之前要先送出使用 Content-type: image/png 的标头字串 (header) 到浏览器端，以顺利传输图片。本函式在 PHP 3.0.13 版之后才支援。


函式:ImagePolygon()

图形处理函式库

ImagePolygon

绘多边形。

语法: int imagepolygon(int im, array points, int num_points, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式可在图片上绘出多边形。参数 points 为阵列，代表多边形区域，阵列的偶数元素为 X 坐标，奇数元素为 Y 坐标，例如 points[0] = x0、points[1] = y0、points[2] = x1、points[3] = y1。参数 num_points 为多边形的转折点数目。参数 col 表示多边形线的颜色。


函式:ImagePSBBox()

图形处理函式库

ImagePSBBox

计算 PostScript 文字所占区域。

语法: array imagepsbbox(string text, int font, int size, int space, int width, float angle);

传回值: 阵列

函式种类: 图形处理

内容说明

本函式用来计算并传回 PostScript 文字区域框 (bounding box) 大小。参数 text 为要写入的字串。参数 font 则为指定的字型。参数 size 为字的大小，单位为像素 (pixel)。参数 width 为的宽度。angle 为角度。传回阵列有四个元素，第一、二个分别为左下角的 x,y 值，第三、四个元素为右上角的 x,y 值。

参考

ImagePSText()


函式:ImagePSEncodeFont()

图形处理函式库

ImagePSEncodeFont

PostScript 字型转成向量字。

语法: int imagepsencodefont(string encodingfile);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将 PostScript Type1 字型转换成向量字。若需要西方语系的特殊文字则要 T1lib 函式库。目前 T1lib 提供 IsoLatin1.enc 和 IsoLatin2.enc 二套字。若常要使用向量字，可以在 php3.ini/php.ini 中设定 ps.default_encoding，PHP 系统会自动载入转换。

参考

ImagePSLoadFont()


函式:ImagePSFreeFont()

图形处理函式库

ImagePSFreeFont

卸下 PostScript 字型。

语法: void imagepsfreefont(int fontindex);

传回值: 整数

函式种类: 图形处理

内容说明

本函式将已载入 PostScript Type1 字型卸下。参数 fontindex 为载入 PostScript Type1 字型的 handle。

参考

ImagePSLoadFont()


函式:ImagePSLoadFont()

图形处理函式库

ImagePSLoadFont

载入 PostScript 字型。

语法: int imagepsloadfont(string filename);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来载入 PostScript Type1 字型。参数 filename 为 PostScript Type1 字型的名称。

参考

ImagePSFreeFont()


函式:ImagePSText()

图形处理函式库

ImagePSText

写 PostScript 文字到图中。

语法: array imagepstext(int image, string text, int font, int size, int foreground, int background, int x, int y, int space, int tightness, float angle, int antialias_steps);

传回值: 阵列

函式种类: 图形处理

内容说明

本函式将 PostScript Type1 字型文字写入图片。参数 image 为图形。text 参数为要写入的字串。参数 font 则为指定的字型。参数 size 为字的大小，单位为像素 (pixel)。参数 foreground 及 background 分别为前景及背景色，程式会依这二色来修正文字边缘的锯齿。参数 x,y 为文字的坐标，以左下角开始计算。space 参数为文字间的空隔大小。参数 tightness 为单字间的紧密度。angle 为角度。最后一个参数 antialias_steps 为边缘锯齿状修正的等级，范围为 4 至 16。传回阵列有四个元素，第一、二个分别为左下角的 x,y 值，第三、四个元素为右上角的 x,y 值。

参考

ImagePSBBox()


函式:ImageRectangle()

图形处理函式库

ImageRectangle

绘矩形。

语法: int imagerectangle(int im, int x1, int y1, int x2, int y2, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式可在图片上绘出长方形。参数 x1、y1 及 x2、y2 分别为矩形对角线的坐标。参数 col 表示矩形边框的颜色。


函式:ImageSetPixel()

图形处理函式库

ImageSetPixel

绘点。

语法: int imagesetpixel(int im, int x, int y, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式可在图片上绘出一点。参数 x、y 为欲绘点的坐标，参数 col 表示该点的颜色。


函式:ImageString()

图形处理函式库

ImageString

绘横式字串。

语法: int imagestring(int im, int font, int x, int y, string s, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式在图片上绘出水平的横式字串。参数 font 为字形，设为 1 到 5 表示使用内定字形。参数 x、y 为字串起点坐标。字串的内容放在参数 s 上。参数 col 表示字串的颜色。

参考

ImageLoadFont()


函式:ImageStringUp()

图形处理函式库

ImageStringUp

绘直式字串。

语法: int imagestringup(int im, int font, int x, int y, string s, int col);

传回值: 整数

函式种类: 图形处理

内容说明

本函式在图片上绘出铅直的直式字串。参数 font 为字形，设为 1 到 5 表示使用内定字形。参数 x、y 为字串起点坐标。字串的内容放在参数 s 上。参数 col 表示字串的颜色。

参考

ImageLoadFont()


函式:ImageSX()

图形处理函式库

ImageSX

取得图片的宽度。

语法: int imagesx(int im);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来取得图片的宽度数值。


函式:ImageSY()

图形处理函式库

ImageSY

取得图片的高度。

语法: int imagesy(int im);

传回值: 整数

函式种类: 图形处理

内容说明

本函式用来取得图片的高度数值。


函式:ImageTTFBBox()

图形处理函式库

ImageTTFBBox

计算 TTF 文字所占区域。

语法: array ImageTTFBBox(int size, int angle, string fontfile, string text);

传回值: 阵列

函式种类: 图形处理

内容说明

本函式用来计算并传回 TTF 文字区域框 (bounding box) 大小。参数 size 为字形的尺寸；angle 为字型的角度；fontfile 为字型档名称，亦可是远端的档案；text 当然就是字串内容了。传回值为阵列，包括了八个元素，头二个分别为左下的 x、y 坐标，第三、四个为右下角的 x、y 坐标，第五、六及七、八二组分别为右上及左上的 x、y 坐标。值得注意的是欲使用本函式，系统要装妥 GD 及 Freetype 二个函式馆。


函式:ImageTTFText()

图形处理函式库

ImageTTFText

写 TTF 文字到图中。

语法: array ImageTTFText(int im, int size, int angle, int x, int y, int col, string fontfile, string text);

传回值: 阵列

函式种类: 图形处理

内容说明

本函式将 TTF (TrueType Fonts) 字型文字写入图片。参数 size 为字形的尺寸；angle 为字型的角度，顺时针计算，0 度为水平，也就是三点钟的方向 (由左到右)，90 度则为由下到上的文字；x,y 二参数为文字的坐标值 (原点为左上角)；参数 col 为字的颜色；fontfile 为字型档名称，亦可是远端的档案；text 当然就是字串内容了。传回值为阵列，包括了八个元素，头二个分别为左下的 x、y 坐标，第三、四个为右下角的 x、y 坐标，第五、六及七、八二组分别为右上及左上的 x、y 坐标。值得注意的是欲使用本函式，系统要装妥 GD 及 Freetype 二个函式馆。

使用范例

本例建立一个 400x30 pixel 大小的黑底图，并用 Arial 向量字体写出 I am NUMBER ONE !! 的白字。

<?php
Header("Content-type: image/gif");
$im = imagecreate(400,30);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
ImageTTFText($im, 20, 0, 10, 20, $white, "/somewhere/arial.ttf", "I am NUMBER ONE !!");
ImageGif($im);
ImageDestroy($im);
?>

参考

ImageTTFBBox()


函式:imap_8bit()

IMAP 电子邮件系统函式库

imap_8bit

将八位元转成 qp 编码。

语法: string imap_8bit(string string);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可将八位元字串转成 QP (quoted-printable) 编码字串。

参考


函式:imap_alerts()

IMAP 电子邮件系统函式库

imap_alerts

所有的警告讯息。

语法: array imap_alerts(void);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来显示所有出现的 IMAP 警告字串。本函式不需要使用任何参数。


函式:imap_append()

IMAP 电子邮件系统函式库

imap_append

附加字串到指定的邮箱中。

语法: int imap_append(int imap_stream, string mbox, string message, string [flags]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可在指定的电子邮箱中增加附加的字串。参数 imap_stream 为 IMAP 的代号。参数 mbox 为电子邮箱的位址。参数 message 为欲附加的讯息。参数 flag 为可省略的旗标，表示电子邮箱的旗标值。值得注意的是要与 Cyrus IMAP 伺服器沟通时，应使用 \r\n 作为行结束字元 (end-of-line, EOL)。若有错误则传回 false 值。


函式:imap_base64()

IMAP 电子邮件系统函式库

imap_base64

解 BASE64 编码。

语法: string imap_base64(string text);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可将用 BASE64 编码字串解码。传回值是解码后的字串。

参考


函式:imap_binary()

IMAP 电子邮件系统函式库

imap_binary

将八位元转成 base64 编码。

语法: string imap_binary(string string);

传回值: 字串

函式种类: 网路系统

内容说明

本函式将字串转成 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网路上顺利传输。更多的 BASE64 编码资讯可以参考 RFC2045 文件之 6.8 节或是 base64_encode()。

参考


函式:imap_body()

IMAP 电子邮件系统函式库

imap_body

读信的内文。

语法: string imap_body(int imap_stream, int msg_number, int [flags]);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可读取信件的内文 (body) 部份。参数 imap_stream 为 IMAP 的代号。参数 msg_number 为信件的序号。参数 flags 可省略，有下列的值

  • FT_UID : 信件序号为 UID。
  • FT_PEEK : 若无设定 \Seen 旗标则不要设本旗标。
  • FT_INTERNAL : 传回字串使用系统格式，不要刻意转成 CRLF 行结束标准。

使用范例

本例利用 IMAP 协定读取 myid@localhost 的第一封信件。

<?php
$mbox = imap_open("{localhost:143}INBOX","myid","mypw");
$message = imap_body($mbox, 1);
imap_close($mbox);
echo $message;
?>


函式:imap_check()

IMAP 电子邮件系统函式库

imap_check

传回邮箱资讯。

语法: object imap_check(int imap_stream);

传回值: 物件

函式种类: 网路系统

内容说明

本函式可取得目前电子邮箱的资讯。传回值为物件型态，包含下面的属性

物件属性 | 代表意义说明
Date | 最新邮件的日期
Driver | 使用的介面
Mailbox | 电子邮箱网址
Nmsgs | 总邮件数目
Recent | 新进邮件数目

参考

imap_mailboxmsginfo()


函式:imap_clearflag_full()

IMAP 电子邮件系统函式库

imap_clearflag_full

清除信件旗标。

语法: imap_clearflag_full(int imap_stream, string sequence, string flag, int [options]);

传回值: 无

函式种类: 网路系统

内容说明

本函式可指定连续信件而清除旗标。参数 imap_stream 为 IMAP 的代号。参数 sequence 为特定的区段序号。参数 flag 为欲设定的旗标值，包括 Seen、Answered、Flagged、Deleted、Draft 及 Recent。参数 options 可省略，可为 ST_UID。


函式:imap_close()

IMAP 电子邮件系统函式库

imap_close

关闭 IMAP 连结。

语法: int imap_close(int imap_stream, int [flags]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来关闭 IMAP 的资料流，亦即结束连结。可省略的参数 flags 的值若为 CL_EXPUNGE 则在关闭连结前会将电子邮件信箱清空。


函式:imap_createmailbox()

IMAP 电子邮件系统函式库

imap_createmailbox

建立新的信箱。

语法: int imap_createmailbox(int imap_stream, string mbox);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来建立新的信箱。成功则传回 true 值。


函式:imap_delete()

IMAP 电子邮件系统函式库

imap_delete

标记欲删除邮件。

语法: int imap_delete(int imap_stream, int msg_number);

传回值: 整数

函式种类: 网路系统

内容说明

本函式仅用来标记欲删除之邮件。实际删除的指令 imap_expunge()


函式:imap_deletemailbox()

IMAP 电子邮件系统函式库

imap_deletemailbox

删除既有信箱。

语法: int imap_deletemailbox(int imap_stream, string mbox);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来删除既有的信箱。成功则传回 true 值。


函式:imap_errors()

IMAP 电子邮件系统函式库

imap_errors

所有的错误讯息。

语法: array imap_errors(void);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来显示所有出现的 IMAP 错误字串。本函式不需要使用任何参数。


函式:imap_expunge()

IMAP 电子邮件系统函式库

imap_expunge

删除已标记的邮件。

语法: int imap_expunge(int imap_stream);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来删除已加入删除标记的邮件。欲标记邮件须使用 imap_delete() 函式。


函式:imap_fetchbody()

IMAP 电子邮件系统函式库

imap_fetchbody

从信件内文取出指定区段。

语法: string imap_fetchbody(int imap_stream, int msg_number, string part_number, flags [flags]);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可读取信件的内文 (body) 部份。参数 imap_stream 为 IMAP 的代号。参数 msg_number 为信件的序号。参数 part_number 为指定的区段。参数 flags 可省略，有下列的值

  • FT_UID : 信件序号为 UID。
  • FT_PEEK : 若无设定 \Seen 旗标则不要设本旗标。
  • FT_INTERNAL : 传回字串使用系统格式，不要刻意转成 CRLF 行结束标准。


函式:imap_fetchheader()

IMAP 电子邮件系统函式库

imap_fetchheader

取得原始标头。

语法: string imap_fetchheader(int imap_stream, int msg_no, int [options]);

传回值: 字串

函式种类: 网路系统

内容说明

本函式将信件标头排序。参数 imap_stream 为 IMAP 的代号。参数 msg_no 为信件序号。参数 options 可省略，其值有下列数种

  • FT_UID : 信件序号为 UID。
  • FT_INTERNAL : 传回字串使用系统格式，不要刻意转成 CRLF 行结束标准。
  • FT_PREFETCHTEXT : 去掉额外的 RTT。


函式:imap_fetchstructure()

IMAP 电子邮件系统函式库

imap_fetchstructure

获取某信件的结构资讯。

语法: array imap_fetchstructure(int imap_stream, int msg_number);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式可读取指定信件的相关资讯。参数 imap_stream 为 IMAP 的代号。参数 msg_number 为信件的序号。传回的资讯为阵列的方式，各元素的内容见下表

元素名称 | 型态
type | 整数 (Integer)
encoding | 整数 (Integer)
ifsubtype | 布林 (Boolean)
subtype | 字串 (String)
ifdescription | 布林 (Boolean)
description | 字串 (String)
ifid | 布林 (Boolean)
id | 字串 (String)
lines | 整数 (Integer)
bytes | 整数 (Integer)
ifparameters | 布林 (Boolean)

其中 type 元素的值代表的意义如下

值 | 代表意义
0 | 文字 text
1 | 复合 multipart
2 | 讯息 message
3 | 程式 application
4 | 声音 audio
5 | 图形 image
6 | 影像 video
7 | 其它 other

而 encoding 值代表的意义如下

值 | 代表意义
0 | 七位元 (7 bit)
1 | 八位元 (8 bit)
2 | 二进位 (binary)
3 | BASE64 编码
4 | QP 编码 (QuotedPrintable)
5 | 其它


函式:imap_getmailboxes()

IMAP 电子邮件系统函式库

imap_getmailboxes

取得全部信件详细资讯。

语法: object imap_getmailboxes(int imap_stream, string ref, string pattern);

传回值: 物件

函式种类: 网路系统

内容说明

本函用来检查 IMAP 伺服器信件的详细资讯。参数 imap_stream 为 IMAP 的代号。参数 ref 通常为 IMAP 伺服器名称，如 "{mail.wahaha.com:143}"。参数 pattern 为剖析比对字串的规则。


函式:imap_getsubscribed()

IMAP 电子邮件系统函式库

imap_getsubscribed

列出所有订阅邮箱。

语法: array imap_getsubscribed(int imap_stream, string ref, string pattern);

传回值: 阵列

函式种类: 网路系统

内容说明

本函用来列示出所有订阅 IMAP 伺服器信箱 (mailbox)。参数 imap_stream 为 IMAP 的代号。参数 ref 通常为 IMAP 伺服器名称，如 "{mail.wahaha.com:143}"。参数 pattern 为剖析比对字串的规则。


函式:imap_header()

IMAP 电子邮件系统函式库

imap_header

获取某信件的标头资讯。

语法: object imap_header(int imap_stream, int msg_number, int [fromlength], int [subjectlength], int [defaulthost]);

传回值: 物件

函式种类: 网路系统

内容说明

本函式可读取指定信件的标头资讯。参数 msg_number 为信件的序号。传回物件有下列的属性：Answered、bcc、bccaddress、cc、ccaddress、Date、date、Deleted、fetchfrom、fetchsubject、Flagged、followup_to、from、fromaddress、in_reply_to、MailDate、message_id、Msgno、newsgroups、Recent、references、remail、reply_to、reply_toaddress、return_path、return_pathaddress、sender、senderaddress、Size、Subject、subject、to、toaddress、udate、Unseen。


函式:imap_headers()

IMAP 电子邮件系统函式库

imap_headers

获取全部信件的标头资讯。

语法: array imap_headers(int imap_stream);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式可读取全部信件的标头资讯。参数 imap_stream 为 IMAP 的代号。传回的阵列一个元素为某一封信的标头。

使用范例

<?php
$mb = imap_open("{my.imap.com.tw}INBOX", "wilson", "mypasswd");
$AllHeaders = imap_headers($mb);
imap_close($mb);
echo "<pre>\n";
for ($i=0; $i < count($AllHeaders); $i++) {
echo $AllHeaders[$i]."<p><hr><p>\n";
}
echo "</pre>\n";
?>


函式:imap_last_error()

IMAP 电子邮件系统函式库

imap_last_error

最后的错误讯息。

语法: string imap_last_error(void);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来显示最后出现的 IMAP 错误字串。本函式不需要使用任何参数。


函式:imap_listmailbox()

IMAP 电子邮件系统函式库

imap_listmailbox

获取邮箱列示。

语法: array imap_listmailbox(int stream_id, string ref, string pattern);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式可获得邮箱列示。参数 imap_stream 为 IMAP 的代号。参数 ref 通常为 IMAP 伺服器名称，参考下例。参数 pattern 可用万用字元 * 代表全部的路径，aayawa@yahoo.com 并指出 (27-Apr-1999) 若本参数以 "" (空字元) 代入，不会传回资料。

使用范例

本例为 alank@shermanloan.com 于 02-Jun-1999 所提出的。

<?php
$Account = "myid";
$Password= "mypasswd";
$mailbox = imap_open("{mail.xyz.com:143}INBOX", $Account, $Password);
if ($mailbox) {
$mailboxes = imap_listmailbox($mailbox, "{mail.xyz.com:143}", "*");
for ($index = 0; $index < count($mailboxes); $index++) {
print($mailboxes[$index] . "\n");
}
imap_close($mailbox);
} else {
print("无法?/font>}启 $Account 的信箱.\n");
}
?>


函式:imap_listsubscribed()

IMAP 电子邮件系统函式库

imap_listsubscribed

获取订阅邮箱列示。

语法: array imap_listsubscribed(int stream_id, string ref, string pattern);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式可获得订阅邮箱 (subscribed) 列示。参数 imap_stream 为 IMAP 的代号。参数 ref 通常为 IMAP 伺服器名称。参数 pattern 可用万用字元 * 代表全部的路径。

参考


函式:imap_mail_copy()

IMAP 电子邮件系统函式库

imap_mail_copy

复制指定信件到它处邮箱。

语法: int imap_mail_copy(int imap_stream, string msglist, string mbox, int [flags]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式复制指定的信件到指定的邮箱 (mailbox) 之中。参数 imap_stream 为 IMAP 的代号。参数 msglist 可以是信件号序，也可以是范围。参数 mbox 为复制的目的邮箱。参数 flags 可省略，有二种选择 CP_UID，CP_MOVE。


函式:imap_mail_move()

IMAP 电子邮件系统函式库

imap_mail_move

移动指定信件到它处邮箱。

语法: int imap_mail_move(int imap_stream, string msglist, string mbox);

传回值: 整数

函式种类: 网路系统

内容说明

本函式移动指定的信件到指定的邮箱 (mailbox) 之中。参数 imap_stream 为 IMAP 的代号。参数 msglist 可以是信件号序，也可以是范围。参数 mbox 为移动的目的邮箱。


函式:imap_mailboxmsginfo()

IMAP 电子邮件系统函式库

imap_mailboxmsginfo

取得目前邮箱的资讯。

语法: object imap_mailboxmsginfo(int imap_stream);

传回值: 物件

函式种类: 网路系统

内容说明

本函用来取得目前使用中邮箱 (mailbox) 的相关资讯。参数 imap_stream 为 IMAP 的代号。传回物件包括下列的属性

物件属性 | 代表意义说明
Date | 最新邮件的日期
Driver | 使用的介面
Mailbox | 电子邮箱网址
Nmsgs | 总邮件数目
Recent | 新进邮件数目
Unread | 未读邮件数目
Size | 邮箱大小

参考

imap_check()


函式:imap_msgno()

IMAP 电子邮件系统函式库

imap_msgno

列出 UID 的连续信件。

语法: int imap_msgno(int imap_stream, int uid);

传回值: 整数

函式种类: 网路系统

内容说明

本函用来列示指定 UID 的连续信件。参数 imap_stream 为 IMAP 的代号。参数 UID 为使用者代号。


函式:imap_num_msg()

IMAP 电子邮件系统函式库

imap_num_msg

取得信件数。

语法: int imap_num_msg(int imap_stream);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可取得邮箱 (mailbox) 的信件数。参数 imap_stream 为 IMAP 的代号。


函式:imap_num_recent()

IMAP 电子邮件系统函式库

imap_num_recent

取得新进信件数。

语法: int imap_num_recent(int imap_stream);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可取得邮箱 (mailbox) 的新进未读信件数。参数 imap_stream 为 IMAP 的代号。


函式:imap_open()

IMAP 电子邮件系统函式库

imap_open

开启 IMAP 连结。

语法: int imap_open(string mailbox, string username, string password, int [flags]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可打开客户端与伺服器之间的 IMAP 连结，并可连结至 POP3 或 NNTP 伺服器。参数 mailbox 为伺服器端的位置。参数 username 为使用者帐号。参数 password 为使用者的密码。参数 flags 可省略，有下列的值：

  • OP_READONLY : 打开连结使用唯读状态。
  • OP_ANONYMOUS : 匿名读取 NNTP 伺服器，不使用 .newsrc 档案。
  • OP_HALFOPEN : 只与 IMAP 或 NNTP 伺服器连结，不开启邮箱。
  • CL_EXPUNGE : 关闭连结时自动清除邮箱中的信件。

使用范例

下例分别为开启 IMAP、POP3、NNTP 的部份参考范例

<?php
$mbox = imap_open("{localhost:143}INBOX","user_id","password");
?/font>}启与 IMAP 伺服器连结，IMAP 的埠 (port) 通?/font>`为 143。
$mbox = imap_open("{localhost/pop3:110}INBOX","user_id","password");
\\ ?/font>}启与 POP3 伺服器连结，POP3 的埠值为 110。
$nntp = imap_open("{localhost/nntp:119}comp.test","","");
\\ ?/font>}启与 NNTP 伺服器连结，NNTP 的埠为 119。
?>


函式:imap_ping()

IMAP 电子邮件系统函式库

imap_ping

检查 IMAP 是否连线。

语法: int imap_ping(int imap_stream);

传回值: 整数

函式种类: 网路系统

内容说明

本函用来检查与 IMAP 伺服器的连线状态。参数 imap_stream 为 IMAP 的代号。若仍然保持与 IMAP 伺服器连线则传回 true 值。


函式:imap_qprint()

IMAP 电子邮件系统函式库

imap_qprint

将 qp 编码转成八位元。

语法: string imap_qprint(string string);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可将 QP (quoted-printable) 编码字串转成八位元字串。

参考


函式:imap_renamemailbox()

IMAP 电子邮件系统函式库

imap_renamemailbox

更改邮箱名字。

语法: int imap_renamemailbox(int imap_stream, string old_mbox, string new_mbox);

传回值: 整数

函式种类: 网路系统

内容说明

本函用来更改邮箱 (mailbox) 的名字。参数 imap_stream 为 IMAP 的代号。参数 old_mbox 及 new_mbox 分别为原邮箱名字及欲更换成的新邮箱名字。更换成功则传回 true 值。


函式:imap_reopen()

IMAP 电子邮件系统函式库

imap_reopen

重开 IMAP 连结。

语法: int imap_reopen(string imap_stream, string mailbox, string [flags]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可重新开启客户端与伺服器之间的 IMAP 连结。本函式通常与 imap_ping() 函式合用。参数 mailbox 为伺服器端的位置。参数 flags 可省略，有下列的值：

  • OP_READONLY : 打开连结使用唯读状态。
  • OP_ANONYMOUS : 匿名读取 NNTP 伺服器，不使用 .newsrc 档案。
  • OP_HALFOPEN : 只与 IMAP 或 NNTP 伺服器连结，不开启邮箱。
  • CL_EXPUNGE : 关闭连结时自动清除邮箱中的信件。

使用范例

<?php
$userid = "nulluser";
$passwd = "passwd38";
$mb = imap_open("(imap.null.org)INBOX", $userid, $passwd);
if (!imap_ping($mb)) {
imap_reopen($mb, $userid, $passwd);
}
imap_close($mb);
?>


函式:imap_rfc822_parse_adrlist()

IMAP 电子邮件系统函式库

imap_rfc822_parse_adrlist

剖析电子邮件位址。

语法: object imap_rfc822_parse_adrlist(string address, string default_host);

传回值: 物件

函式种类: 网路系统

内容说明

本函式可剖析电子邮件位址。传回的物件包括下列属性

属性名 | 说明
mailbox | 使用者名称
host | 伺服器名称
personal | 个人名字
adl | 所在来源绕路


函式:imap_rfc822_write_address()

IMAP 电子邮件系统函式库

imap_rfc822_write_address

电子邮件位址标准化。

语法: string imap_rfc822_write_address(string mailbox, string host, string personal);

传回值: 字串

函式种类: 网路系统

内容说明

本函式将电子邮件位址成为 rfc822 的标准格式。


函式:imap_scanmailbox()

IMAP 电子邮件系统函式库

imap_scanmailbox

寻找信件有无特定字串。

语法: array imap_scanmailbox(int imap_stream, string ref, string pattern, string content);

传回值: 阵列

函式种类: 网路系统

内容说明

本函用来检查与 IMAP 伺服器信件中有无特定的字串。参数 imap_stream 为 IMAP 的代号。参数 ref 通常为 IMAP 伺服器名称，如 "{mail.wahaha.com:143}"。参数 pattern 为剖析比对字串的规则。参数 content 则为欲寻找的字串内容。


函式:imap_search()

IMAP 电子邮件系统函式库

imap_search

搜寻指定标准的信件。

语法: array imap_search(int imap_stream, string criteria, int flags);

传回值: 阵列

函式种类: 网路系统

内容说明

本函用来搜寻合乎指定条件的信件。参数 imap_stream 为 IMAP 的代号。参数 criteria 为指定的条件，各栏位以空格 (space) 分开，条件见下表。参数 flags 为 SE_UID。

条件 | 说明
ALL | 传回所有合乎标准的信件
ANSWERED | 信件有设定 \\ANSWERED 旗标者
BCC "字串" | Bcc 栏中有指定 "字串" 的信件
BEFORE "日期" | 指定 "日期" 以前的信件
BODY "字串" | 内文栏位中有指定 "字串" 的信件
CC "字串" | Cc 栏中有指定 "字串" 的信件
DELETED | 合乎已删除的信件
FLAGGED | 信件有设定 \\FLAGGED 旗标者
FROM "字串" | From 栏中有指定 "字串" 的信件
KEYWORD "字串" | 关键字为指定 "字串" 者
NEW | 新的信件
OLD | 旧的信件
ON "日期" | 指定 "日期" 的信件
RECENT | 信件有设定 \\RECENT 旗标者
SEEN | 信件有设定 \\SEEN 旗标者
SINCE "日期" | 指定 "日期" 之后的信件
SUBJECT "字串" | Subject 栏中有指定 "字串" 的信件
TEXT "字串" | Text 栏中有指定 "字串" 的信件
TO "字串" | To 栏中有指定 "字串" 的信件
UNANSWERED | 未回应的信件
UNDELETED | 未删除的信件
UNFLAGGED | 未设定旗标的信件
UNKEYWORD "字串" | 未设定关键 "字串" 的信件
UNSEEN | 未读取的信件


函式:imap_setflag_full()

IMAP 电子邮件系统函式库

imap_setflag_full

设定信件旗标。

语法: int imap_setflag_full(int imap_stream, string sequence, string flag, int [options]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可指定连续信件而设定旗标。参数 imap_stream 为 IMAP 的代号。参数 sequence 为特定的区段序号。参数 flag 为欲设定的旗标值，包括 Seen、Answered、Flagged、Deleted、Draft 及 Recent。参数 options 可省略，可为 ST_UID。


函式:imap_sort()

IMAP 电子邮件系统函式库

imap_sort

将信件标头排序。

语法: array imap_sort(int imap_stream, int criteria, int reverse, int [options]);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式将信件标头排序。参数 imap_stream 为 IMAP 的代号。参数 criteria 的意义见下表，并只能是下表的其中一项

排序方法 | 说明
SORTDATE | 依发信日期排序
SORTARRIVAL | 依抵达日期排序
SORTFROM | 依寄件人排序
SORTSUBJECT | 依主题排序
SORTTO | 依收件人排序
SORTCC | 依副本寄送处排序
SORTSIZE | 依信件大小排序

参数 reverse 值为 0 时表由小到大排序，若值为 1 表由大到小排序。参数 options 可省略，有下列的值: SE_UID 与 SE_NOPREFETCH。


函式:imap_status()

IMAP 电子邮件系统函式库

imap_status

目前的状态资讯。

语法: object imap_status(int imap_stream, string mailbox, int options);

传回值: 物件

函式种类: 网路系统

内容说明

本函式用来显示目前 IMAP 的状态资讯。参数 imap_stream 为 IMAP 的代号。参数 mailbox 为指定的邮箱。参数 options 有下面的选择：SA_MESSAGES、SA_RECENT、SA_UNSEEN、SA_UIDNEXT、SA_UIDVALIDITY 与 SA_ALL。


函式:imap_subscribe()

IMAP 电子邮件系统函式库

imap_subscribe

订阅邮箱。

语法: int imap_subscribe(int imap_stream, string mbox);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可订阅新邮箱 (mailbox)。


函式:imap_uid()

IMAP 电子邮件系统函式库

imap_uid

取得信件 UID。

语法: string imap_uid(string mailbox, int msgno);

传回值: 字串

函式种类: 网路系统

内容说明

本函式可取得指定信件的 UID。参数 mailbox 为邮箱名。参数 msgno 为信件序号。


函式:imap_undelete()

IMAP 电子邮件系统函式库

imap_undelete

取消删除邮件标记。

语法: int imap_undelete(int imap_stream, int msg_number);

传回值: 整数

函式种类: 网路系统

内容说明

本函式将标记欲删除邮件取消。标记欲删除邮件需使用 imap_delete()。参数 msg_number 代表邮件的流水序号。


函式:imap_unsubscribe()

IMAP 电子邮件系统函式库

imap_unsubscribe

取消订阅邮箱。

语法: int imap_unsubscribe(int imap_stream, string mbox);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可取消订阅新邮箱 (mailbox)。


函式:implode()

字串处理函式库

implode

将阵列变成字串。

语法: string implode(string glue, array pieces);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将阵列的内容组合成一个字串，参数 glue 是字之间的分隔符号。

使用范例

<?
$colon_separated = implode(":", $array);
echo $colon_separated;
?>

参考


函式:intval()

变数处理函式库

intval

变数转成整数型态。

语法: int intval(mixed var, int [base]);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式可将变数转成整数型态。可省略的参数 base 是转换的基底，内定值为 10。转换的变数 var 可以为阵列或物件之外的任何型态变数。

参考


函式:iptcparse()

杂项函式库

iptcparse

使用 IPTC 模组解析位元资料。

语法: array iptcparse(string iptcblock);

传回值: 阵列

函式种类: 图形处理

内容说明

本函式利用 IPTC 模组解析图形的位元资料中的 APP13 资讯。IPTC 模组可到 http://www.xe.net/iptc 下载。若执行失败或者没有 APP13 的 IPTC 资料时传回 false。

使用范例

<?php
$size = GetImageSize("testimg.jpg",&$info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>


函式:is_array()

变数处理函式库

is_array

判断变数型态是否为阵列型态。

语法: int is_array(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为阵列型态则传回 true，否则传回 false。

参考


函式:is_dir()

档案系统函式库

is_dir

测试档案是否为目录。

语法: boolean is_dir(string filename);

传回值: 布林值

函式种类: 档案存取

内容说明

本函式传回 true 值则表示指定的 filename 为目录名称。传回值放在快取缓冲区中，可以参考 clearstatcache()。

注意: php@wastelan.com (11-Jun-1999) 指出若用 is_dir("..");
的方式，传回的也是 true。

参考


函式:is_double()

变数处理函式库

is_double

判断变数型态是否为倍浮点数型态。

语法: int is_double(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为倍浮点数型态则传回 true，否则传回 false。

参考


函式:is_executable()

档案系统函式库

is_executable

测试档案是否为可执行档。

语法: boolean is_executable(string filename);

传回值: 布林值

函式种类: 档案存取

内容说明

本函式传回 true 值则表示指定的 filename 存在并为可执行档。传回值放在快取缓冲区中，可以参考 clearstatcache()。

参考


函式:is_file()

档案系统函式库

is_file

测试档案是否为正常档案。

语法: boolean is_file(string filename);

传回值: 布林值

函式种类: 档案存取

内容说明

本函式传回 true 值则表示指定的 filename 存在并为正常的档案。传回值放在快取缓冲区中，可以参考 clearstatcache()。

参考


函式:is_float()

变数处理函式库

is_float

判断变数型态是否为浮点数型态。

语法: int is_float(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为浮点数型态则传回 true，否则传回 false。

参考


函式:is_int()

变数处理函式库

is_int

判断变数型态是否为整数型态。

语法: int is_int(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为整数型态则传回 true，否则传回 false。

参考


函式:is_integer()

变数处理函式库

is_integer

判断变数型态是否为长整数型态。

语法: int is_integer(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为长整数型态则传回 true，否则传回 false。本函式其实就是 is_long()。

参考


函式:is_link()

档案系统函式库

is_link

测试档案是否为连结档。

语法: boolean is_link(string filename);

传回值: 布林值

函式种类: 档案存取

内容说明

本函式传回 true 值则表示指定的 filename 存在并为符号连结档 (symbolic link)。传回值放在快取缓冲区中，可以参考 clearstatcache()。

参考


函式:is_long()

变数处理函式库

is_long

判断变数型态是否为长整数型态。

语法: int is_long(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为长整数型态则传回 true，否则传回 false。

参考


函式:is_object()

变数处理函式库

is_object

判断变数型态是否为物件型态。

语法: int is_object(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为物件型态则传回 true，否则传回 false。

参考


函式:is_readable()

档案系统函式库

is_readable

测试档案是否可读取。

语法: boolean is_readable(string filename);

传回值: 布林值

函式种类: 档案存取

内容说明

本函式传回 true 值则表示指定的 filename 存在并且可读取。传回值放在快取缓冲区中，参考 clearstatcache()。

参考

is_writeable()


函式:is_real()

变数处理函式库

is_real

判断变数型态是否为实数型态。

语法: int is_real(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为实数型态则传回 true，否则传回 false。

参考


函式:is_string()

变数处理函式库

is_string

判断变数型态是否为字串型态。

语法: int is_string(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

若变数为字串型态则传回 true，否则传回 false。

参考


函式:is_writeable()

档案系统函式库

is_writeable

测试档案是否可写入。

语法: boolean is_writeable(string filename);

传回值: 布林值

函式种类: 档案存取

内容说明

本函式传回 true 值则表示指定的 filename 存在并且可读取。参数 filename 也可以是目录名称，用来测试该目录是否可写入。传回值放在快取缓冲区中，参考 clearstatcache()。

参考

readable()


函式:isset()

变数处理函式库

isset

判断变数是否已设定。

语法: int isset(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式用来测试变数是否已经设定。若变数已存在则传回 true 值。其它情形传回 false 值。

使用范例

<?php
$a = "test";
echo isset($a); // true
unset($a);
echo isset($a); // false
?>

参考


函式:JDDayOfWeek()

历法函式库

JDDayOfWeek

传回日期在周几。

语法: mixed jddayofweek(int julianday, int mode);

传回值: 混合型态

函式种类: 时间日期

内容说明

本函式传回日期在当周的天数，传回值依 mode 值决定，详见下表。

Mode | 代表义意
0 | 传回周几为整数值 (0 为周日, 1 为周一... 余类推)
1 | 传回字串为周几 (英文-格里高里历)
2 | 传回字串为周几的缩写 (英文-格里高里历)

[ 上一页 ]


函式:JDMonthName()

历法函式库

JDMonthName

传回月份名。

语法: string jdmonthname(int julianday, int mode);

传回值: 字串

函式种类: 时间日期

内容说明

本函式传回指定历法的月份字串。参数 mode 为历法名称，详见下表。

Mode | 代表义意
0 | 格里高里历 (缩写)
1 | 格里高里历
2 | 凯撒历 (缩写)
3 | 凯撒历
4 | 犹太历
5 | 法国共和历


函式:JDToFrench()

历法函式库

JDToFrench

将凯撒日计数转换成为法国共和历法。

语法: string jdtofrench(int month, int day, int year);

传回值: 字串

函式种类: 时间日期

内容说明

将凯撒历法的日期计数转换成为法国共和历法字串，并以 "月份/日期/年" (month/day/year) 的字串传回。


函式:JDToGregorian()

历法函式库

JDToGregorian

将凯撒日计数 (Julian Day Count) 转换成为格里高里历法 (Gregorian date)。

语法: string jdtogregorian(int julianday);

传回值: 字串

函式种类: 时间日期

内容说明

将凯撒历法的日期计数转换成为格里高里历法字串，并以"月份/日期/年" (month/day/year) 的字串传回。格里高里历为教皇格梩高里十三世在西元 1582 年颁行的历法。


函式:JDToJewish()

历法函式库

JDToJewish

将凯撒日计数转换成为犹太历法。

语法: string jdtojewish(int julianday);

传回值: 字串

函式种类: 时间日期

内容说明

将凯撒历法的日期计数转换成为犹太历法字串，并以"月份/日期/年" (month/day/year) 的字串传回。


函式:JDToJulian()

历法函式库

JDToJulian

将凯撒日计数转换成为凯撒历法。

语法: string jdtojulian(int julianday);

传回值: 字串

函式种类: 时间日期

内容说明

将凯撒历法的日期计数转换成为凯撒历法字串，并以"月份/日期/年" (month/day/year) 的字串传回。


函式:JewishToJD()

历法函式库

JewishToJD

将犹太历法转换成为凯撒日计数。

语法: int jewishtojd(int month, int day, int year);

传回值: 整数

函式种类: 时间日期

内容说明

有效的范围为犹太历法西元前 3761 年起。犹太历法存在了数千年，但早期并没有公式化的开始月份计算法。每年的第一个月为首次观测到的新月。


函式:join()

字串处理函式库

join

将阵列变成字串。

语法: string join(string glue, array pieces);

传回值: 字串

函式种类: 资料处理

内容说明

本函式是 implode 函式的别名。


函式:JulianToJD()

历法函式库

JulianToJD

将凯撒历法转换成为凯撒日计数。

语法: int juliantojd(int month, int day, int year);

传回值: 整数

函式种类: 时间日期

内容说明

有效的范围为凯撒历法西元前 4713 年至西元 9999 年。这套软体能计算到西元前 4713 年，但这是不太有意义的。凯撒历法是在西元前 46 年建立的，但一些细节等到西元 8 年才稳定下来。


函式:key()

阵列处理函式库

key

取得阵列中的索引资料。

语法: mixed key(array array);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

本函式从目前阵列的指标，传回其索引。

参考


函式:ksort()

阵列处理函式库

ksort

将阵列的元素依索引排序。

语法: void ksort(array array);

传回值: 无

函式种类: 资料处理

内容说明

本函式将阵列中的元素依索引排序，排序后的索引和值仍然对应。

使用范例

<?
$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
ksort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."\n";
}
?>

上面的例子，传回的资料为
fruits[a] = orange
fruits[b] = banana
fruits[c] = apple
fruits[d] = lemon

参考


函式:ldap_add()

LDAP 目录协定函式库

ldap_add

增加 LDAP 名录的条目。

语法: boolean ldap_add(int handle, string dn, array entry);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来加入新的条目到 LDAP 名录之中。参数 handle 为开启 LDAP 的代号。参数 dn 为要加入条目的具体 dn 字串。参数 entry 为阵列，为个体所有的条目，阵列的内容是条目的相关资讯。若无错误则传回 true 值。

使用范例

<?php
$ds=ldap_connect("localhost"); // 连上 LDAP 伺服器
if ($ds) {
// 系住恰当的 dn
$r=ldap_bind($ds,"cn=root, o=A2Z Company, c=TW", "secret");
// 预先准备好新条目的资料
$info["cn"]="Wilson Peng";
$info["sn"]="Peng";
$info["mail"]="wilson@wilson.gs";
$info["objectclass"]="person";
// 加入新条目
$r=ldap_add($ds, "cn=Wilson Peng, o=A2Z Company, c=TW", $info);
ldap_close($ds);
} else {
echo "抱歉，无法连上 LDAP 伺服器。";
}
?>


函式:ldap_bind()

LDAP 目录协定函式库

ldap_bind

系住 LDAP 目录。

语法: boolean ldap_bind(int handle, string [bind_rdn], string [bind_password]);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来系住特定的 RDN 和使用者密码。参数 handle 为开启 LDAP 的代号。参数 bind_rdn 及 bind_password 可省略。当未指定使用者的 RDN 及密码时，则系住匿名使用者。若无错误则传回 true 值。


函式:ldap_close()

LDAP 目录协定函式库

ldap_close

结束 LDAP 连结。

语法: boolean ldap_close(int handle);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式将关闭与 LDAP 伺服器的连结。参数 handle 为开启 LDAP 的代号。实际上这个函式就是 ldap_unbind() 的别名而已。若无错误则传回 true 值。

参考

ldap_unbind()


函式:ldap_connect()

LDAP 目录协定函式库

ldap_connect

连上 LDAP 伺服器。

语法: int ldap_connect(string [hostname], int [port]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来连结 LDAP 的伺服器。参数 hostname 若省略，则传回现在的连结代号，也就是 handle。参数 port 亦可省略，内定值为 389。执行若无错误则传回连结代号，发生错误则传回 false。


函式:ldap_count_entries()

LDAP 目录协定函式库

ldap_count_entries

搜寻结果的数目。

语法: int ldap_count_entries(int handle, int result_identifier);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得搜寻的结果数目。参数 handle 为开启 LDAD 伺服器的代号。参数 result_identifier 为 ldap_search() 所传回的搜寻代号。执行若无错误则传回寻找到的数目，发生错误则传回 false。


函式:ldap_delete()

LDAP 目录协定函式库

ldap_delete

删除指定资源。

语法: boolean ldap_delete(int handle, string dn);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来删除指定 dn 的资料。参数 handle 为开启 LDAD 伺服器的代号。参数 dn 为指定的显名 (distinguished name)。发生错误则传回 false，若无错误则传回 true。


函式:ldap_dn2ufn()

LDAP 目录协定函式库

ldap_dn2ufn

将 dn 转成易读的名字。

语法: string ldap_dn2ufn(string dn);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来转换 dn 的名字成为较易读取的名字 ufn (User Friendly Name)。参数 dn 为欲转换的字串。传回值即为 ufn 字串。


函式:ldap_explode_dn()

LDAP 目录协定函式库

ldap_explode_dn

切开 dn 的栏位。

语法: array ldap_explode_dn(string dn, int attrib);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式将 dn 中的各栏位切开，切开后的每个栏位即为 RDN (Relative Distinguished Name)。参数 dn 为欲切开的字串。参数 attrib 若为 0 表示传回该栏的属性，若为 1 则表示传回该栏的值。传回值置于阵列之中。


函式:ldap_first_attribute()

LDAP 目录协定函式库

ldap_first_attribute

取得第一笔资源的属性。

语法: string ldap_first_attribute(int handle, int result_entry_identifier, int ber_identifier);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得 LDAP 中第一笔资源的属性。参数 handle 为开启 LDAP 的代号。参数 result_entry_identifier 将由 ldap_next_attribute() 沿用。参数 ber_identifier 为指标，意即需在前面加上 & 符号。

参考


函式:ldap_first_entry()

LDAP 目录协定函式库

ldap_first_entry

取得第一笔结果代号。

语法: int ldap_first_entry(int handle, int result_identifier);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得 LDAP 中第一笔结果的代号 ID。参数 handle 为开启 LDAP 的代号。参数 result_identifier 为 ldap_search() 所传回的搜寻代号。若有错误则传回 false。

参考

ldap_get_entries()


函式:ldap_free_result()

LDAP 目录协定函式库

ldap_free_result

释放传回资料记忆体。

语法: int ldap_free_result(int result_identifier);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来释放传回资料所使用的记忆体。若没有使用本函式释放记忆体，程式结束时也会自动释放。


函式:ldap_get_attributes()

LDAP 目录协定函式库

ldap_get_attributes

取得传回资料的属性。

语法: array ldap_get_attributes(int handle, int result_entry_identifier);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得 LDAP 中所有资源的属性。参数 handle 为开启 LDAP 的代号。参数 result_entry_identifier 将由 ldap_next_attribute() 沿用。传回值为阵列资料，阵列元素从零开始依次为属性的值。例如

return_value["count"] : 属性个数
return_value[0] : 第一个属性
return_value[n] : 第n+1个属性
return_value["attribute"]["count"] : 属性值个数
return_value["attribute"][0] : 第一个属性值
return_value["attribute"][i] : 第i+1个属性值

使用范例

下面范例为片段的程式

<?php
$entry = ldap_first_entry($ds, $sr);
$attrs = ldap_get_attributes($ds, $entry);
echo $attrs["count"]." 笔属性资料如下:<p>\n";
for ($i=0; $i<$attrs["count"]; $i++) {
echo $attrs[$i]."<br>";
}
?>

参考


函式:ldap_get_dn()

LDAP 目录协定函式库

ldap_get_dn

取得 DN 值。

语法: string ldap_get_dn(int handle, int result_entry_identifier);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得 LDAP 的显名 (DN, distinguished name)字串值。参数 handle 为开启 LDAP 的代号。参数 result_identifier 为 ldap_search() 所传回的搜寻代号。若有错误则传回 false。


函式:ldap_get_entries()

LDAP 目录协定函式库

ldap_get_entries

取得全部传回资料。

语法: array ldap_get_entries(int handle, int result_identifier);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得 LDAP 的全部传回资料。参数 handle 为开启 LDAP 的代号。传回值为阵列资料，例如

return_value["count"] : 传回资料笔数
return_value[0] : 第一笔传回资料
return_value[i]["dn"] : 第 i+1 笔资料的 DN
return_value[i]["count"] : 第 i+1 笔资料的数目
return_value[i][j] : 第 i+1 笔资料的第 j 值
return_value[i]["attribute"]["count"] : 第 i+1 笔资料的属性数
return_value[i]["attribute"][j] : 第 i+1 笔资料的第 j 个属性

参考


函式:ldap_get_values()

LDAP 目录协定函式库

ldap_get_values

取得全部传回值。

语法: array ldap_get_values(int handle, int result_entry_identifier, string attribute);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得 LDAP 的全部传回资料值。参数 handle 为开启 LDAP 的代号。参数 attribute 有 surname 及 mail 二种。传回值为阵列资料值，例如

return_value["count"] : 属性值总数
return_value[0] : 第一个属性值
return_value[i] : 第 i+1 个属性值

使用范例

下例为片段程式

<?
$values = ldap_get_values($ds, $entry, "mail");
echo $values["count"]." 笔电子邮件地址: <p>\n";
for ($i=0; $i < $values["count"]; $i++) {
echo $values[$i]."<br>";
}
?>


函式:ldap_list()

LDAP 目录协定函式库

ldap_list

列出简表。

语法: int ldap_list(int handle, string base_dn, string filter, array [attributes]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来列出单层 (One Level) 的资料，实际上它等于ldap_searchldap_search()，只是将值域改成 LDAP_SCOPE_ONELEVEL，本函式作用有点像 DOS 的 dir 或是 UNIX 的 ls。参数 handle 为开启 LDAP 的代号。参数 base_dn 为最基本的 dn 条件值，例如包括 o 和 c 二栏位。参数 filter 为布林条件，它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 档案，其中的 Search Syntax 一部份有详细的说明。参数 attributes 可省略，用来设定更细的列出属性。

使用范例

这个范例为片段程式

<?php
$basedn = "o=SuperPHP Company, c=TW";
$justthese = array("ou");
$sr=ldap_list($ds, $basedn, "ou=*", $justthese);
$info = ldap_get_entries($ds, $sr);
for ($i=0; $i<$info["count"]; $i++) {
echo $info[$i]["ou"][0] ;
}
?>

参考


函式:ldap_mod_add()

LDAP 目录协定函式库

ldap_mod_add

增加 LDAP 名录的属性。

语法: boolean ldap_mod_add(int handle, string dn, array entry);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来加入新的属性到 LDAP 名录之中。参数 handle 为开启 LDAP 的代号。参数 dn 为要加入条目的具体 dn 字串。参数 entry 为阵列，为个体所有的属性，阵列的内容是名录属性的相关资讯。若无错误则传回 true 值。

参考

ldap_modify()


函式:ldap_mod_del()

LDAP 目录协定函式库

ldap_mod_del

删除 LDAP 名录的属性。

语法: boolean ldap_mod_del(int handle, string dn, array entry);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来删除到 LDAP 名录之中的指定属性。参数 handle 为开启 LDAP 的代号。参数 dn 为要加入条目的具体 dn 字串。参数 entry 为阵列，为个体所有的属性，阵列的内容是名录属性的相关资讯。若无错误则传回 true 值。


函式:ldap_mod_replace()

LDAP 目录协定函式库

ldap_mod_replace

新的 LDAP 名录取代旧属性。

语法: boolean ldap_mod_replace(int handle, string dn, array entry);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来用新的指定属性取代 LDAP 名录之中的属性。参数 handle 为开启 LDAP 的代号。参数 dn 为要加入条目的具体 dn 字串。参数 entry 为阵列，为个体所有的属性，阵列的内容是名录属性的相关资讯。若无错误则传回 true 值。


函式:ldap_modify()

LDAP 目录协定函式库

ldap_modify

改变 LDAP 名录的属性。

语法: boolean ldap_modify(int handle, string dn, array entry);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来改变 LDAP 伺服器上目前所在名录上的属性。参数 handle 为开启 LDAP 的代号。参数 dn 为要加入条目的具体 dn 字串。参数 entry 为阵列，为个体所有的属性，阵列的内容是名录属性的相关资讯。若无错误则传回 true 值。

使用范例

本例为 nickt@powys.gov.uk 提出的片段 (23-Apr-1999)

<?php
$newinfo[mail]="nick@county.gov.uk";
ldap_modify($valid_ldaplink, $valid_dn, $newinfo);
?>

参考

ldap_mod_add()


函式:ldap_next_attribute()

LDAP 目录协定函式库

ldap_next_attribute

取得传回资料的下笔属性。

语法: string ldap_next_attribute(int handle, int result_entry_identifier, int ber_identifier);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得 LDAP 中所在传回的下笔属性。参数 handle 为开启 LDAP 的代号。参数 result_entry_identifier 将由 ldap_next_attribute() 沿用。参数 ber_identifier 为指标，意即需在前面加上 & 符号。

参考


函式:ldap_next_entry()

LDAP 目录协定函式库

ldap_next_entry

取得下一笔结果代号。

语法: int ldap_next_entry(int handle, int result_entry_identifier);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得 LDAP 中目前指标的下笔资料代号。参数 handle 为开启 LDAP 的代号。参数 result_identifier 为 ldap_search() 所传回的搜寻代号。若有错误则传回 false。

参考


函式:ldap_read()

LDAP 目录协定函式库

ldap_read

取得目前的资料属性。

语法: int ldap_read(int handle, string base_dn, string filter, array [attributes]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来列出树状资料，它的值域条件是 LDAP_SCOPE_BASE。参数 handle 为开启 LDAP 的代号。参数 base_dn 为最基本的 dn 条件值，例如包括 o 和 c 二栏位。参数 filter 为布林条件，它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 档案，其中的 Search Syntax 一部份有详细的说明。参数 attributes 可省略，用来设定更细的列出属性。

参考


函式:ldap_search()

LDAP 目录协定函式库

ldap_search

列出树状简表。

语法: int ldap_search(int handle, string base_dn, string filter, array [attributes]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来列出树状资料，它的值域条件是 LDAP_SCOPE_SUBTREE。参数 handle 为开启 LDAP 的代号。参数 base_dn 为最基本的 dn 条件值，例如包括 o 和 c 二栏位。参数 filter 为布林条件，它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 档案，其中的 Search Syntax 一部份有详细的说明。参数 attributes 可省略，用来设定更细的列出属性。

使用范例

下面范例为片段程式

<?php
$dn = "o=SuperLDAP Company, c=TW";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array( "ou", "sn", "givenname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
print $info["count"]." entries returned<p>";
?>

参考


函式:ldap_unbind()

LDAP 目录协定函式库

ldap_unbind

结束 LDAP 连结。

语法: boolean ldap_unbind(int handle);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式将关闭与 LDAP 伺服器的连结。参数 handle 为开启 LDAP 的代号。若无错误则传回 true 值。

参考

ldap_close()


函式:leak()

杂项函式库

leak

泄出记忆体。

语法: void leak(int bytes);

传回值: 无

函式种类: PHP 系统功能

内容说明

本函式用来系统除错使用。通常在执行某一回应后可自动清除泄出的记忆体。


函式:link()

档案系统函式库

link

建立硬式连结。

语法: int link(string target, string link);

传回值: 整数

函式种类: 档案存取

内容说明

本函式建立硬式连结，用来将参数 link 连结至 target。

参考


函式:linkinfo()

档案系统函式库

linkinfo

取得连结资讯。

语法: int linkinfo(string path);

传回值: 整数

函式种类: 档案存取

内容说明

本函式使用系统呼叫 lstat，传回 UNIX 上 C 语言 stat 结构型态的 st_dev 栏位。传回 0 或 false 表示发生错误。

参考


函式:list()

阵列处理函式库

list

列出阵列中元素的值。

语法: void list(...);

传回值: 无

函式种类: 资料处理

内容说明

和 array 函式一样，不算是正规的函式。list() 函式用在列出所有阵列中的数值。

使用范例

下面的范例列出从 MySQL 资料库传回的阵列资料。
<table>
<tr>
<th>员工姓名</th>
<th>薪资</th>
</tr>
<?php

$result = mysql($conn, "SELECT id, name, salary FROM employees");
while (list($id, $name, $salary) = mysql_fetch_row($result)) {
print(" <tr>\n".
" <td><a href=\"info.php3?id=$id\">$name</a></td>\n".
" <td>$salary</td>\n".
" </tr>\n");
}

?></table>

参考


函式:Log()

数学运算函式库

Log

自然对数值。

语法: float log(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式计算参数 arg 的自然对数 (natural logarithm) 值。


函式:Log10()

数学运算函式库

Log10

10 基底的对数值。

语法: float log10(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式计算参数 arg 的 10 基底对数值。


函式:lstat()

档案系统函式库

lstat

取得连结档相关资讯。

语法: array lstat(string filename);

传回值: 阵列

函式种类: 档案存取

内容说明

本函式可蒐集连结档案的相关资讯，并传回阵列。阵列的元素依序如下：

  1. 装置名称 (device)
  2. inode 值
  3. 连结 (link) 到该档的总数。
  4. 拥有者的 UID
  5. 拥有者的 GID
  6. 若为字元或装置设备则为装置型态 (限系统支援 st_blksize 方有效，Windows 系列传回 -1)
  7. 位元组为单位的档案长度
  8. 最后存取时间
  9. 最后修改时间
  10. 最后更动时间
  11. 档案系统的区块大小 (限系统支援 st_blksize 方有效，Windows 系列传回 -1)
  12. 匹配的区块数
传回值放在快取缓冲区中，参考 clearstatcache()。


函式:ltrim()

字串处理函式库

ltrim

去除连续空白。

语法: string ltrim(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式用来删去字串中的连续空白带 (whitespace)。


函式:mail()

电子邮件函式库

mail

寄出电子邮件。

语法: boolean mail(string to, string subject, string message, string [additional_headers]);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式寄出电子邮件到指定的邮件地址 to，subject 表示主题，message 为信件内容。额外的选项 additional_headers 可省略，表示其它的邮件档头。

使用范例

<?
$message="abcdefghijklmnopqrstuvwxyz";
mail("php@wilson.gs", "没有主题", $message, "From: someone@wahaha.org.tw\nReply-To: reply@wahaha.org.tw\nX-Mailer: PHP/" . phpversion());
?>


函式:max()

数学运算函式库

max

取得最大值。

语法: mixed max(mixed arg1, mixed arg2 .... mixed argn);

传回值: 混合型态资料

函式种类: 数学运算

内容说明

本函式计算参数间的最大值。若第一个参数是数字阵列，则会找出该阵列的最大数字。若第一个参数非阵列，则需二个以上的参数。这些数字可以是整数、倍精确数或数字字串的型态。参数的数目不限，视使用者的需求而定。在计算时，只要有一个参数是倍精确数，本函式会将所有的参数都转成倍精确数，并传回倍精确数。若参数只有整数及数字字串，则会将所有的参数转换成整数，并传回整数。

参考

min()


函式:mcrypt_cbc()

mcrypt 编码函式库

mcrypt_cbc

使用 CBC 将资料加/解密。

语法: string mcrypt_cbc(int cipher, string key, string data, int mode, string [iv]);

传回值: 字串

函式种类: 编码处理

内容说明

本函式使用 CBC 密码检索本 (cipher block chaining)，将资料加密及解密。参数 cipher 为加/解密方式，例如 MCRYPT_TripleDES。参数 key 是密码钥匙，当然要注意保持它的机密性。欲加密或解密的字串就放在参数 data 之中。参数 mode 表示加密 MCRYPT_ENCRYPT 或是解密 MCRYPT_DECRYPT。参数 iv 是可省略的参数，代表向量初始化 (Initialization vector, IV)。


函式:mcrypt_cfb()

mcrypt 编码函式库

mcrypt_cfb

使用 CFB 将资料加/解密。

语法: string mcrypt_cfb(int cipher, string key, string data, int mode, string iv);

传回值: 字串

函式种类: 编码处理

内容说明

本函式使用 CFB 密码检索本 (cipher feedback)，将资料加密及解密。参数 cipher 为加/解密方式，例如 MCRYPT_TripleDES。参数 key 是密码钥匙，当然要注意保持它的机密性。欲加密或解密的字串就放在参数 data 之中。参数 mode 表示加密 MCRYPT_ENCRYPT 或是解密 MCRYPT_DECRYPT。参数 iv 是代表向量初始化 (Initialization vector, IV)。


函式:mcrypt_create_iv()

mcrypt 编码函式库

mcrypt_create_iv

从随机源将向量初始化。

语法: string mcrypt_create_iv(int size, int source);

传回值: 字串

函式种类: 编码处理

内容说明

本函式用来建立向量初始化 (Initialization vector, IV) 的值。参数 size 为指定的向量初始化值的长度。参数 source 为随机资料的来源，来源可以是 MCRYPT_RAND (系统产生的随机值)、MCRYPT_DEV_RANDOM (UNIX 系统中 /dev/random 的资料)、MCRYPT_DEV_URANDOM (UNIX 系统中 /dev/urandom 的资料)，若使用 MCRYPT_RAND 当做随机源，记得先使用 srand() 产生乱数种子。

使用范例

<?php
$cipher = MCRYPT_TripleDES;
$block_size = mcrypt_get_block_size($cipher);
$iv = mcrypt_create_iv($block_size, MCRYPT_DEV_RANDOM);
?>


函式:mcrypt_ecb()

mcrypt 编码函式库

mcrypt_ecb

使用 ECB 将资料加/解密。

语法: string mcrypt_ecb(int cipher, string key, string data, int mode);

传回值: 字串

函式种类: 编码处理

内容说明

本函式使用 ECB 密码检索本 (electronic codebook)，将资料加密及解密。参数 cipher 为加/解密方式，例如 MCRYPT_TripleDES。参数 key 是密码钥匙，当然要注意保持它的机密性。欲加密或解密的字串就放在参数 data 之中。参数 mode 表示加密 MCRYPT_ENCRYPT 或是解密 MCRYPT_DECRYPT。


函式:mcrypt_get_block_size()

mcrypt 编码函式库

mcrypt_get_block_size

取得编码方式的区块大小。

语法: int mcrypt_get_block_size(int cipher);

传回值: 整数

函式种类: 编码处理

内容说明

本函式用来取得编码方式的区块大小。参数为编码名称，传回整数值的单位为位元组 (byte)。


函式:mcrypt_get_cipher_name()

mcrypt 编码函式库

mcrypt_get_cipher_name

取得编码方式的名称。

语法: string mcrypt_get_cipher_name(int cipher);

传回值: 字串

函式种类: 编码处理

内容说明

本函式用来取得编码方式的名称。传回值为名称字串，若没有指定的编码方式则传回 false 或输入的名称。

使用范例

下例会输出 TripleDES 字串。

<?php
$cipher = MCRYPT_TripleDES;
print mcrypt_get_cipher_name($cipher);
?>


函式:mcrypt_get_key_size()

mcrypt 编码函式库

mcrypt_get_key_size

取得编码钥匙大小。

语法: int mcrypt_get_key_size(int cipher);

传回值: 整数

函式种类: 编码处理

内容说明

本函式用来取得编码钥匙的大小。参数为编码名称，传回整数值的单位为位元组 (byte)。


函式:mcrypt_ofb()

mcrypt 编码函式库

mcrypt_ofb

使用 OFB 将资料加/解密。

语法: string mcrypt_ofb(int cipher, string key, string data, int mode, string iv);

传回值: 字串

函式种类: 编码处理

内容说明

本函式使用 OFB 密码检索本 (output feedback)，将资料加密及解密。参数 cipher 为加/解密方式，例如 MCRYPT_TripleDES。参数 key 是密码钥匙，当然要注意保持它的机密性。欲加密或解密的字串就放在参数 data 之中。参数 mode 表示加密 MCRYPT_ENCRYPT 或是解密 MCRYPT_DECRYPT。参数 iv 为向量初始化 (Initialization vector, IV)。


函式:md5()

字串处理函式库

md5

计算字串的 MD5 杂凑。

语法: string md5(string str);

传回值: 字串

函式种类: 编码处理

内容说明

本函式用来计算 MD5 杂凑。关于 MD5 编码法，可以参考 RSA Data Security, Inc. MD5 Message-Digest Algorithm. RFC1321；或是赖溪松、韩亮、张真诚等合着之近代密码学及其应用，11.3。


函式:mhash()

mhash 杂凑函式库

mhash

计算杂凑值。

语法: string mhash(int hash, string data);

传回值: 字串

函式种类: 编码处理

内容说明

本函式依指定的杂凑演算法计算杂凑值。参数 hash 为指定的杂凑演算法；参数 data 为欲计算的字串值。


函式:mhash_count()

mhash 杂凑函式库

mhash_count

取得杂凑 ID 的最大值。

语法: int mhash_count(void);

传回值: 整数

函式种类: 编码处理

内容说明

本函式用来取得杂凑演算的最大 ID 值。在使用杂凑计算时，会从 0 开始计数到使用的数值。本函式不用输入参数。

使用范例

<?php
$nr = mhash_count();
for($i = 0; $i <= $nr; $i++) {
echo sprintf("杂凑 %s 的区块大小为 %d\n", mhash_get_hash_name($i), mhash_get_block_size($i));
}
?>


函式:mhash_get_block_size()

mhash 杂凑函式库

mhash_get_block_size

取得杂凑方式的区块大小。

语法: int mhash_get_block_size(int hash);

传回值: 整数

函式种类: 编码处理

内容说明

本函式用来取得杂凑演算的区块大小。参数为编码名称，传回整数值的单位为位元组 (byte)。


函式:mhash_get_hash_name()

mhash 杂凑函式库

mhash_get_hash_name

取得杂凑演算法名称。

语法: string mhash_get_hash_name(int hash);

传回值: 字串

函式种类: 编码处理

内容说明

本函式取得杂凑演算法的名称。传回值为名称字串，若没有指定的杂凑演算法则传回 false 或输入的名称。

使用范例

下例传回的字串为 MD5。

<?php
$hash = MHASH_MD5;
print mhash_get_hash_name($hash);
?>


函式:microtime()

日期与时间函式库

microtime

取得目前时间的 UNIX 时间戳记的百万分之一秒值。

语法: string microtime(void);

传回值: 字串

函式种类: 时间日期

内容说明

传回目前时间的百万分之一秒戳记值。若作业系统没有提供 gettimeofday() 的系统呼叫函式，则本函式亦无效。

参考

time()


函式:min()

数学运算函式库

min

取得最小值。

语法: mixed min(mixed arg1, mixed arg2 .... mixed argn);

传回值: 混合型态资料

函式种类: 数学运算

内容说明

本函式计算参数间的最小值。若第一个参数是数字阵列，则会找出该阵列的最小数字。若第一个参数非阵列，则需二个以上的参数。这些数字可以是整数、倍精确数或数字字串的型态。参数的数目不限，视使用者的需求而定。在计算时，只要有一个参数是倍精确数，本函式会将所有的参数都转成倍精确数，并传回倍精确数。若参数只有整数及数字字串，则会将所有的参数转换成整数，并传回整数。

参考

max()


函式:mkdir()

档案系统函式库

mkdir

建立目录。

语法: int mkdir(string pathname, int mode);

传回值: 整数

函式种类: 档案存取

内容说明

本函式建立参数 pathname 目录，参数 mode 以八进位的方式指定 (在参数前加 0) 比较不会出错。传回 true 表示成功，失败则传回 false。

使用范例

下例就是用八进位的例子，建立 /path/to/my/dir 目录，该目录只有拥有者及 root 等级可读写执行，其它人无法使用。

<?php
mkdir("/path/to/my/dir", 0700);
?>

参考

rmdir()


函式:mktime()

日期与时间函式库

mktime

取得 UNIX 时间戳记。

语法: int mktime(int hour, int minute, int second, int month, int day, int year);

传回值: 整数

函式种类: 时间日期

内容说明

输入一个时间，则传回 UNIX 时间戳记的长整数。

使用范例

<?
echo date( "M-d-Y", mktime(0,0,0,12,32,1997) );
echo date( "M-d-Y", mktime(0,0,0,13,1,1997) );
echo date( "M-d-Y", mktime(0,0,0,1,1,1998) );
?>

参考


函式:msql()

mSQL 资料库函式库

msql

送出 query 字串。

语法: int msql(string database, string query, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可送出 query 字串到指定的 database 之中，在旧版的 PHP 程式，本函式为 msql_db_query()。参数 database 为资料载 (database) 的名称。参数 query 为欲对资料库下的指令字串。参数 link_identifier 可省略，为资料库连线的代号。执行正常则传回资料库存取代号，发生错误则传回 false 值。

参考

msql_query()


函式:msql_affected_rows()

mSQL 资料库函式库

msql_affected_rows

得到 mSQL 最后操作影响的列数目。

语法: int msql_affected_rows(int query_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式取得 mSQL 在最后查询操作 query 指令后所影响的列 (row) 数目，例如使用 UPDATE、DELETE 等指令。参数 query_identifier 为使用 msql_query() 或 msql() 时所开启的资料库存取代号值。

参考


函式:msql_close()

mSQL 资料库函式库

msql_close

关闭 mSQL 资料库连线。

语法: boolean msql_close(int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式关闭与 mSQL 资料库伺服器的连线。若无指定参数 link_identifier 则会关闭最后的一笔连线。用 msql_pconnect() 连线则无法使用本函式关闭。实际上本函式不是一定需要的，当 PHP 整页程式结束后，将会自动关闭与资料库的非永久性 (non-persistent) 连线。成功传回 true、失败传回 false 值。

参考


函式:msql_connect()

mSQL 资料库函式库

msql_connect

开启 mSQL 资料库连线。

语法: int msql_connect(string [hostname[:port]], string [username], string [password]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式建立与 mSQL 伺服器的连线。其中所有的参数都可省略。当使用本函式却不加任何参数时，参数 hostname 的内定值为 localhost。而参数 hostname 后面可以加冒号与埠号，代表使用那个埠与 mSQL 连接。当然在使用资料库时，早点使用 msql_close() 将连线关掉可以节省资源。

参考


函式:msql_create_db()

mSQL 资料库函式库

msql_create_db

建立一个新的 mSQL 资料库。

语法: boolean msql_create_db(string database_name, int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来建立新的资料库 (database)。在建立前，必须先与伺服器连线。若无使用参数 link_identifier，则使用最后的连线代号。

参考

msql_drop_db()


函式:msql_createdb()

mSQL 资料库函式库

msql_createdb

建立一个新的 mSQL 资料库。

语法: boolean msql_createdb(string database_name, int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来建立新的资料库 (database)，这个函式其实也就是 msql_create_db()。

参考

msql_drop_db()


函式:msql_data_seek()

mSQL 资料库函式库

msql_data_seek

移动内部传回指标。

语法: boolean msql_data_seek(int query_identifier, int row_number);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式可移动内部传回的列指标到指定的 row_number 去。之后若使用 msql_fetch_row() 可以传回新列的值。参数 query_identifier 为指令 (query) 代号。成功传回 true、失败则传回 false。

参考

msql_fetch_row()


函式:msql_dbname()

mSQL 资料库函式库

msql_dbname

取得目前所在资料库名称。

语法: string msql_dbname(int query_identifier, int i);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得目前所在的资料库 (database) 名称。参数 query_identifier 为指令 (query) 代号。参数 i 为使用 msql_listdbs() 所传回的资料库指标。本函式传回值为资料库名称字串。


函式:msql_drop_db()

mSQL 资料库函式库

msql_drop_db

删除指定的 mSQL 资料库。

语法: boolean msql_drop_db(string database_name, int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来删除指定的资料库 (database)。在删除前，注意须与伺服器连线。参数 database_name 为欲删除的资料库名称。若无使用参数 link_identifier，则使用最后的连线代号。删除成功则传回 true，失败则传回 false。

参考

msql_create_db()


函式:msql_dropdb()

mSQL 资料库函式库

msql_dropdb

删除指定的 mSQL 资料库。

语法: boolean msql_dropdb(string database_name, int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来删除指定的资料库 (database)，这个函式和 msql_drop_db() 是完全相同的。在删除前，注意须与伺服器连线。参数 database_name为欲删除的资料库名称。若无使用参数 link_identifier，则使用最后的连线代号。删除成功则传回 true，失败则传回 false。

参考


函式:msql_error()

mSQL 资料库函式库

msql_error

取得最后错误讯息。

语法: string msql_error(int [link_identifier]);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 mSQL 资料库的最后错误讯息字串。若无使用参数 link_identifier，则使用最后的连线代号。


函式:msql_fetch_array()

mSQL 资料库函式库

msql_fetch_array

传回阵列资料。

语法: array msql_fetch_array(int query_identifier);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果分割到阵列变数中。可以将本函式当作是 msql_fetch_row() 的加强版。

使用范例

<?php
echo "<ol type=A>\n";
$handle = msql_connect("localhost");
msql_selectdb("userinfo", $handle);
$dbresult=msql_query("select * from info", $handle);
while($dbarray=msql_fetch_array($dbresult)) {
echo "<li>".$dbarray["IDNumber"]."\n";
}
msql_close($handle);
echo "</ol>\n";
?>


函式:msql_fetch_field()

mSQL 资料库函式库

msql_fetch_field

取得栏位资讯。

语法: object msql_fetch_field(int query_identifier, int [field_offset]);

传回值: 物件

函式种类: 资料库功能

内容说明

本函式传回的物件资料为 query_identifier 的栏位 (Column) 资讯。传回物件的属性如下：

  • name - 栏位名称
  • table - 栏位所在表格的资料表名称
  • not_null - 若为 1 表示本栏位不能是空的 (null)
  • primary_key - 若为 1 表示本栏位是主要键 (primary key)
  • unique_key - 若为 1 表示本栏位为不可重覆键 (unique key)
  • type - 栏位型态

参考

msql_field_seek()


函式:msql_fetch_object()

mSQL 资料库函式库

msql_fetch_object

传回物件资料。

语法: object msql_fetch_object(int query_identifier);

传回值: 物件

函式种类: 资料库功能

内容说明

本函式用来将查询结果 query_identifier 拆到物件变数中。使用方法和 msql_fetch_array() 几乎相同，不同的地方在于本函式传回资料是物件而不是阵列。若 query_identifier 没有资料，则传回 false 值。另外值得注意的地方是，取回的物件资料的索引只能是文字而不能用数字，这是因为物件的特性。物件资料的特性中所有的属性 (property) 名称都不能是数字。关于速度方面，本函式的处理速度几乎和 msql_fetch_array()、msql_fetch_row() 二函式差不多，要用哪个函式还是看使用的需求决定。

参考


函式:msql_fetch_row()

mSQL 资料库函式库

msql_fetch_row

传回单列的各栏位。

语法: array msql_fetch_row(int query_identifier);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 query_identifier 之单列拆到阵列变数中。阵列的索引是数字索引，第一个的索引值是 0。若 query_identifier 没有资料，则传回 false 值。

参考


函式:msql_field_seek()

mSQL 资料库函式库

msql_field_seek

设定指标到传回值的某栏位。

语法: int msql_field_seek(int query_identifier, int field_offset);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式设定目前的指标到传回值的特定栏位中。参数 query_identifier 为查询结果的 ID 代码。参数 field_offset 为第几个栏位。

参考

msql_fetch_field()


函式:msql_fieldflags()

mSQL 资料库函式库

msql_fieldflags

获得栏位的旗标。

语法: string msql_fieldflags(int query_identifier, int field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的旗标。参数 query_identifier 为查询结果的 ID 代码。参数 field 为第几个栏位的数字。传回的旗标字串可能是：not null、primary key 或二者都有或者是空字串 (表 null)。


函式:msql_fieldlen()

mSQL 资料库函式库

msql_fieldlen

获得栏位的长度。

语法: int msql_fieldlen(int query_identifier, int field);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的长度。参数 query_identifier 为查询结果的 ID 代码。参数 field 为第几个栏位的数字。


函式:msql_fieldname()

mSQL 资料库函式库

msql_fieldname

传回指定栏位的名称。

语法: string msql_fieldname(int query_identifier, int field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得指定栏位的名称。参数 query_identifier 为查询结果的 ID 代码。参数 field 为第几个栏位的数字。


函式:msql_fieldtable()

mSQL 资料库函式库

msql_fieldtable

获得栏位的资料表 (table) 名称。

语法: int msql_fieldtable(int query_identifier, int field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的资料表名。


函式:msql_fieldtype()

mSQL 资料库函式库

msql_fieldtype

获得栏位的型态。

语法: string msql_fieldtype(int query_identifier, int field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的型态格式。参数 query_identifier 为查询结果的 ID 代码。参数 field 为第几个栏位的数字。传回的字串为栏位的型态，包括了 int、string、real 等三种型态。


函式:msql_free_result()

mSQL 资料库函式库

msql_free_result

释放传回占用记忆体。

语法: int msql_free_result(int query_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以释放目前 mSQL 资料库 query 所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式。PHP 程式会在结束时自动释放记忆体。


函式:msql_freeresult()

mSQL 资料库函式库

msql_freeresult

释放传回占用记忆体。

语法: int msql_freeresult(int query_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以释放目前 mSQL 资料库 query 所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式。本函式和 msql_free_result() 一样。


函式:msql_list_dbs()

mSQL 资料库函式库

msql_list_dbs

列出可用资料库 (database)。

语法: int msql_list_dbs(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到 mSQL 伺服器的可用资料库。参数 link_identifier 可省略。


函式:msql_list_fields()

mSQL 资料库函式库

msql_list_fields

列出指定资料表的栏位 (field)。

语法: int msql_list_fields(string database, string tablename, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到指定的资料表的所有栏位。参数 database 为资料库名称。参数 tablename 为资料表名称。参数 link_identifier 可省略，为连线的代码。传回的栏位资讯可以供 msql_fieldflags()、msql_fieldlen()、msql_fieldname() 和 msql_fieldtype() 等函式使用。若有错误则传回 -1。


函式:msql_list_tables()

mSQL 资料库函式库

msql_list_tables

列出指定资料库的资料表 (table)。

语法: int msql_list_tables(string database, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到指定资料库中的所有资料表名称。参数 database 为指定的资料库名称。参数 link_identifier 可省略。


函式:msql_listdbs()

mSQL 资料库函式库

msql_listdbs

列出可用资料库 (database)。

语法: int msql_listdbs(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到 mSQL 伺服器的可用资料库。参数 link_identifier 可省略。本函式和 msql_list_dbs() 相同。


函式:msql_listfields()

mSQL 资料库函式库

msql_listfields

列出指定资料表的栏位 (field)。

语法: int msql_listfields(string database, string tablename, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到指定的资料表的所有栏位。参数 database 为资料库名称。参数 tablename 为资料表名称。参数 link_identifier 可省略，为连线的代码。传回的栏位资讯可以供 msql_fieldflags()、msql_fieldlen()、msql_fieldname() 和 msql_fieldtype() 等函式使用。若有错误则传回 -1。本函式和 msql_list_fields() 相同。


函式:msql_listtables()

mSQL 资料库函式库

msql_listtables

列出指定资料库的资料表 (table)。

语法: int msql_listtables(string database, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到指定资料库中的所有资料表名称。参数 database 为指定的资料库名称。参数 link_identifier 可省略。本函式和 msql_list_tables() 相同。


函式:msql_num_fields()

mSQL 资料库函式库

msql_num_fields

取得传回栏位的数目。

语法: int msql_num_fields(int query_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回栏位的数目。参数 query_identifier 为查询的代号。

参考


函式:msql_num_rows()

mSQL 资料库函式库

msql_num_rows

取得传回列的数目。

语法: int msql_num_rows(int query_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回列的数目。参数 query_identifier 为查询的代号。


函式:msql_numfields()

mSQL 资料库函式库

msql_numfields

取得传回栏位的数目。

语法: int msql_numfields(int query_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回栏位的数目。参数 query_identifier 为查询的代号。本函式和 msql_num_fields() 相同。

参考


函式:msql_numrows()

mSQL 资料库函式库

msql_numrows

取得传回列的数目。

语法: int msql_numrows(int query_identifier);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回列的数目。参数 query_identifier 为查询的代号。本函式和 msql_num_rows() 相同。


函式:msql_pconnect()

mSQL 资料库函式库

msql_pconnect

开启 mSQL 伺服器长期连线。

语法: int msql_pconnect(string [hostname[:port]] , string [username] , string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式和 msql_connect() 用法及参数均雷同。不同的处在于使用本函式开启资料库时，程式会先寻找是否曾经执行过本函式，若执行过则传回先前执行的 ID。另一个不同的地方是本函式无法使用 msql_close() 关闭资料库。


函式:msql_query()

mSQL 资料库函式库

msql_query

送出一个 query 字串。

语法: int msql_query(string query, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式送出 query 字串供 mSQL 做相关的处理或者执行。参数 query 为合乎 SQL 语法的 query 字串。若没有指定 link_identifier 参数，则程式会自动寻找最近开启的 ID。

参考


函式:msql_regcase()

mSQL 资料库函式库

msql_regcase

将字串逐字传回大小写字元。

语法: string msql_regcase(string string);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式可将字串之字元逐字传回大小写。在 PHP 使用上，本函式没有什么作用，但可能可以提供外部程式或资料库处理。本函式即 sql_regcase()。


函式:msql_result()

mSQL 资料库函式库

msql_result

取得查询 (query) 的结果。

语法: int msql_result(int query_identifier, int row, mixed [field]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式取得一格 query 的结果。参数 field 可以是栏位名称、顺序或者是 fieldname.tablename 的格式。在传回资料量少时，可以使用本函式来处理。当资料库大时，本函式的效率就有待考量了，这时可以使用较有效率的 msql_fetch_row()、msql_fetch_array() 或 msql_fetch_object() 等函式。


函式:msql_select_db()

mSQL 资料库函式库

msql_select_db

选择一个资料库。

语法: boolean msql_select_db(string database_name, int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式选择 mSQL 伺服器中的资料库以供之后的资料查询作业 (query) 处理。成功传回 true，失败则传回 false。

参考


函式:msql_selectdb()

mSQL 资料库函式库

msql_selectdb

选择一个资料库。

语法: boolean msql_selectdb(string database_name, int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式选择 mSQL 伺服器中的资料库以供之后的资料查询作业 (query) 处理。成功传回 true，失败则传回 false。本函式即 msql_select_db()。

参考


函式:msql_tablename()

mSQL 资料库函式库

msql_tablename

传回指定资料表的名称。

语法: string msql_tablename(int query_identifier, int field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得资料表栏位的名称。参数 query_identifier 为查询结果的 ID 代码。参数 field 为第几个栏位的数字。

使用范例

<?php
msql_connect ("localhost");
$result = msql_list_tables("userinfo");
$i = 0;
while ($i < msql_numrows($result)) {
$tb_names[$i] = msql_tablename($result, $i);
echo $tb_names[$i] . "<br>\n";
$i++;
}
?>


函式:mssql_affected_rows()

SQL Server 资料库函式库

mssql_affected_rows

取得最后 query 影响的列数。

语法: int mssql_affected_rows(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得最后一次对资料库下 query 指令所影响的列数，会影响的为 INSERT、UPDATE 或 DELETE 等指令，而 SELECT 不会影响。参数 link_identifier 可省略，为开启资料库的连线代号。传回值即为列数。


函式:mssql_close()

SQL Server 资料库函式库

mssql_close

关闭与资料库的连线。

语法: boolean mssql_close(int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来关闭与 MS SQL Server 资料库的连线，能关闭的为使用 mssql_connect() 函式开启的资料库，若使用 mssql_pconnect() 开启的资料库则不能以本函式关闭。参数 link_identifier 可省略，为开启资料库的连线代号。关闭成功则传回 true 值。

参考


函式:mssql_connect()

SQL Server 资料库函式库

mssql_connect

连上资料库。

语法: int mssql_connect(string [servername], string [username], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启与 MS SQL Server 资料库的连线。参数 servername 为欲连上的资料库伺服器名称。参数 username 及 password 可省略，分别为连线使用的帐号及密码。使用本函式需注意早点关闭资料库，以减少系统的负担。连线成功则传回资料库的连线代号，失败传回 false 值。

参考


函式:mssql_data_seek()

SQL Server 资料库函式库

mssql_data_seek

移动列指标。

语法: boolean mssql_data_seek(int result_identifier, int row_number);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来移动 MS SQL Server 资料表中的列指标到指定的列上，可供 mssql_fetch_row() 等函式使用。参数 result_identifier 为查询的代号值。参数 row_number 则为欲移往的列数。若失败则传回 false 值。

参考


函式:mssql_fetch_array()

SQL Server 资料库函式库

mssql_fetch_array

传回阵列资料。

语法: array mssql_fetch_array(int result);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料，则传回 false 值。而本函式可以说是 mssql_fetch_row() 的加强函式，除可以将传回列及数字索引放入阵列之外，还可以将文字索引放入阵列中。


函式:mssql_fetch_field()

SQL Server 资料库函式库

mssql_fetch_field

取得栏位资讯。

语法: object mssql_fetch_field(int result, int field_offset);

传回值: 物件

函式种类: 资料库功能

内容说明

本函式传回的物件资料为 result 的栏位 (Column) 资讯。传回物件的属性如下：

  • name - 栏位名称
  • column_source -栏位所在表格的资料表名称
  • max_length - 栏位的最大长度
  • numeric - 若为 1 表示本栏位为数字型态 (numeric)

参考

mssql_field_seek()


函式:mssql_fetch_object()

SQL Server 资料库函式库

mssql_fetch_object

传回物件资料。

语法: object mssql_fetch_object(int result);

传回值: 物件

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 拆到物件变数中。使用方法和 mssql_fetch_array() 几乎相同，不同的地方在于本函式传回资料是物件而不是阵列。若 result 没有资料，则传回 false 值。另外值得注意的地方是，取回的物件资料的索引只能是文字而不能用数字，这是因为物件的特性。物件资料的特性中所有的属性 (property) 名称都不能是数字，因此只好乖乖使用文字字串当索引了。关于速度方面，本函式的处理速度几乎和 mssql_fetch_array() 及 mssql_fetch_row() 二函式差不多，要用哪个函式还是看使用的需求决定。

参考


函式:mssql_fetch_row()

SQL Server 资料库函式库

mssql_fetch_row

传回单列的各栏位。

语法: array mssql_fetch_row(int result);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 之单列拆到阵列变数中。阵列的索引是数字索引，第一个的索引值是 0。若 result 没有资料，则传回 false 值。

参考


函式:mssql_field_seek()

SQL Server 资料库函式库

mssql_field_seek

设定指标到传回值的某栏位。

语法: int mssql_field_seek(int result, int field_offset);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式设定目前的指标到传回值的特定栏位中。参数 result 为传回值代码。参数 field_offset 则为指定的栏位序数。

使用范例

mssql_fetch_field


函式:mssql_free_result()

SQL Server 资料库函式库

mssql_free_result

释放传回占用记忆体。

语法: int mssql_free_result(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以释放目前 MS SQL Server 资料库 query 传回所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式。PHP 程式会在结束时自动释放。


函式:mssql_num_fields()

SQL Server 资料库函式库

mssql_num_fields

取得传回栏位的数目。

语法: int mssql_num_fields(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回栏位的数目。参数 result 为传回值代码。

参考


函式:mssql_num_rows()

SQL Server 资料库函式库

mssql_num_rows

取得传回列的数目。

语法: int mssql_num_rows(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回列的数目。参数 result 为传回值代码。

参考


函式:mssql_pconnect()

SQL Server 资料库函式库

mssql_pconnect

开启 MS SQL 伺服器长期连线。

语法: int mssql_pconnect(string [servername], string [username], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式和 mssql_connect() 雷同。不同的地方在于使用本函式开启资料库时，程式会先寻找是否曾经执行过本函式，若执行过则传回先前执行的 ID。另一个不同的地方是本函式无法使用 mssql_close() 关闭资料库。参数 servername 为欲连上的资料库伺服器名称。参数 username 及 password 可省略，分别为连线使用的帐号及密码。


函式:mssql_query()

SQL Server 资料库函式库

mssql_query

送出一个 query 字串。

语法: boolean mssql_query(string query, int plink_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式送出 query 字串供 MS SQL Server 做相关的处理或者执行。若没有指定 link_identifier 参数，则程式会自动寻找最近开启的 ID。成功则传回 true 值。


函式:mssql_result()

SQL Server 资料库函式库

mssql_result

取得查询 (query) 的结果。

语法: int mssql_result(int result, int row, mixed field);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式取得一格 query 的结果。参数 field 可以是栏位名称、顺序或者是 fieldname.tablename 的格式。在传回资料量少时，可以使用本函式来处理。当资料库大时，本函式的效率就有待考量了，这时可以使用较有效率的 mssql_fetch_row()、mssql_fetch_array() 或 mssql_fetch_object() 等函式。


函式:mssql_select_db()

SQL Server 资料库函式库

mssql_select_db

选择一个资料库。

语法: boolean mssql_select_db(string database_name, int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式选择 MS SQL Server 中的资料库以供之后的资料查询作业 (query) 处理。成功传回 true，失败则传回 false。


函式:mt_getrandmax()

数学运算函式库

mt_getrandmax

乱数的最大值。

语法: int mt_getrandmax(void);

传回值: 整数

函式种类: 数学运算

内容说明

本函式计算乱数函式 mt_rand() 可能取得的取得的最大乱数值。本函式不需参数。

参考


函式:mt_rand()

数学运算函式库

mt_rand

取得乱数值。

语法: int mt_rand([int min], [int max]);

传回值: 整数

函式种类: 数学运算

内容说明

本函式不使用一般常用的 libc 来计算乱数值，而是使用计算速度至少快四倍的马其赛特旋转 (Mersenne Twister) 演算法来计算乱数值。有关马特赛特旋转演算法可在松本真的 http://www.math.keio.ac.jp/~matumoto/emt.html 找到更多的相关资讯，最佳化的原始程式则在 http://www.scp.syr.edu/~marc/hawk/twister.html。若没有指定乱数的最大及最小范围，本函式会自动的从 0 到 RAND_MAX 中取一个乱数。若有指定 min 及 max 的参数，则从指定参数中取一个数字，例如 mt_rand(38, 49) 则会从 38 到 49 之间取一个乱数值。值得注意的是为使乱数的乱度最大，每次在取乱数之前最好使用 mt_srand() 以设定新的乱数种子。

参考


函式:mt_srand()

数学运算函式库

mt_srand

设定乱数种子。

语法: void mt_srand(int seed);

传回值: 无

函式种类: 数学运算

内容说明

本函式传入参数 seed 后，设定乱数的种子。值得注意的是参数 seed 值最好也是随机出现的数字，例如利用加入时间做为变数的来源就是不错的方法，或者开发其它的硬体周边介面可取得更好的乱数。

使用范例

本例加入时间的因素，以执行时的百万分之一秒当乱数种子

<?php
mt_srand((double)microtime()*1000000);
$randval = mt_rand();
echo $randval;
?>

参考


函式:mysql_affected_rows()

MySQL 资料库函式库

mysql_affected_rows

得到 MySQL 最后操作影响的列数目。

语法: int mysql_affected_rows(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可得到 MySQL 最后查询操作 INSERT、UPDATE 或 DELETE 所影响的列 (row) 数目。若最后的查询 (query) 是使用 DELETE 而且没有使用 WHERE 命令，则会删除全部资料，本函式将传回 0。若最后使用的是 SELECT，则用本函式不会得到预期的数目，因为要改变 MySQL 资料库本函式才有效，欲得到 SELECT 传回的数目需使用 mysql_num_rows() 函式。

[ 下一页 ]


函式:mysql_close()

MySQL 资料库函式库

mysql_close

关闭 MySQL 伺服器连线。

语法: int mysql_close(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式关闭与 MySQL 资料库伺服器的连线。若无指定参数 link_identifier 则会关闭最后的一笔连线。用 mysql_pconnect() 连线则无法使用本函式关闭。实际上本函式不是一定需要的，当 PHP 整页程式结束后，将会自动关闭与资料库的非永久性 (non-persistent) 连线。成功传回 true、失败传回 false 值。

参考


函式:mysql_connect()

MySQL 资料库函式库

mysql_connect

开启 MySQL 伺服器连线。

语法: int mysql_connect(string [hostname] [:port], string [username], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式建立与 MySQL 伺服器的连线。其中所有的参数都可省略。当使用本函式却不加任何参数时，参数 hostname 的内定值为 localhost、参数 username 的内定值为 PHP 执行行程的拥有者、参数 password 则为空字串 (即没有密码)。而参数 hostname 后面可以加冒号与埠号，代表使用那个埠与 MySQL 连接。当然在使用资料库时，早点使用 mysql_close() 将连线关掉可以节省资源。

使用范例

这是一位未具名网友提供的范例 (18-Feb-1999)
<?php
$dbh = mysql_connect('localhost:3306','mcclain','standard');
mysql_select_db('admreqs');
$query = "insert into requests(date, request, email, priority,status) values (NOW(),'$description', '$email', '$priority', 'NEW')";
$res = mysql_query($query, $dbh);
$query = "select max(id) from requests";
$res = mysql_query($query, $dbh);
$err = mysql_error();
if($err){
echo "发生错误，请通知<a href=mailto:webmaster@my.site>站长</a>";
}
$row = mysql_fetch_row($res);
echo "未来您使用的号码为: ".$row[0];
?>

参考


函式:mysql_create_db()

MySQL 资料库函式库

mysql_create_db

建立一个 MySQL 新资料库。

语法: int mysql_create_db(string database name, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来建立新的资料库 (database)。在建立前，必须先与伺服器连线。

参考

mysql_drop_db()


函式:mysql_data_seek()

MySQL 资料库函式库

mysql_data_seek

移动内部传回指标。

语法: int mysql_data_seek(int result_identifier, int row_number);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可移动内部传回的列指标到指定的 row_number 去。之后若使用 mysql_fetch_row() 可以传回新列的值。成功传回 true、失败则传回 false。


函式:mysql_db_query()

MySQL 资料库函式库

mysql_db_query

送查询字串 (query) 到 MySQL 资料库。

语法: int mysql_db_query(string database, string query, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来送出查询字串 (query) 到后端的 MySQL 资料库中。而可省略的参数 link_identifier 若不存在，程式会自动寻找其它 mysql_connect() 连线后的连线代码。发生错误时会传回 false，其它没错误时则传回它的传回代码。

参考

mysql_connect()


函式:mysql_drop_db()

MySQL 资料库函式库

mysql_drop_db

移除资料库。

语法: int mysql_drop_db(string database_name, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式移除已存在的资料库。成功传回 true、失败则传回 false。

参考

mysql_create_db()


函式:mysql_errno()

MySQL 资料库函式库

mysql_errno

传回错误讯息代码。

语法: int mysql_errno(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到 MySQL 资料库伺服器的错误代码。通常用在 PHP 网页程式开发阶段，作为 PHP 与 MySQL 的除错用。

使用范例

<?php
mysql_connect("marliesle");
echo mysql_errno().": ".mysql_error()."<BR>";
mysql_select_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."<BR>";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error()."<BR>";
?>

参考

mysql_error()


函式:mysql_error()

MySQL 资料库函式库

mysql_error

传回错误讯息。

语法: string mysql_error(int [link_identifier]);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以得到 MySQL 资料库伺服器的错误讯息。通常用在 PHP 网页程式开发阶段，与 mysql_errno() 一起作为PHP 与 MySQL 的除错用。

参考

mysql_errno()


函式:mysql_fetch_array()

MySQL 资料库函式库

mysql_fetch_array

传回阵列资料。

语法: array mysql_fetch_array(int result, int [result_typ]);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料，则传回 false 值。而本函式可以说是 mysql_fetch_row() 的加强函式，除可以将传回列及数字索引放入阵列之外，还可以将文字索引放入阵列中。若是好几个传回栏位都是相同的文字名称，则最后一个置入的栏位有效，解决方法是使用数字索引或者为这些同名的栏位 (column) 取别名 (alias)。值得注意的是使用本函式的处理速度其实不会比 mysql_fetch_row() 函式慢，要用哪个函式还是看使用的需求决定。参数 result_typ 是一个常数值，有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。

使用范例

<?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from table");
while($row = mysql_fetch_array($result)) {
echo $row["user_id"];
echo $row["fullname"];
}
mysql_free_result($result);
?>


函式:mysql_fetch_field()

MySQL 资料库函式库

mysql_fetch_field

取得栏位资讯。

语法: object mysql_fetch_field(int result, int [field_offset]);

传回值: 物件

函式种类: 资料库功能

内容说明

本函式传回的物件资料为 result 的栏位 (Column) 资讯。传回物件的属性如下：

  • name - 栏位名称
  • table - 栏位所在表格的资料表名称
  • max_length - 栏位的最大长度
  • not_null - 若为 1 表示本栏位不能是空的 (null)
  • primary_key - 若为 1 表示本栏位是主要键 (primary key)
  • unique_key - 若为 1 表示本栏位为不可重覆键 (unique key)
  • multiple_key - 若为 1 表示本栏位为可重覆键 (non-unique key)
  • numeric - 若为 1 表示本栏位为数字型态 (numeric)
  • blob - 若为 1 表示本栏位为位元型态 (BLOB)
  • type - 栏位型态
  • unsigned - 若为 1 表示本栏位为无记号 (unsigned)
  • zerofill - 若为 1 表示本栏位为被零填满 (zero-filled)

参考

mysql_field_seek()


函式:mysql_fetch_lengths()

MySQL 资料库函式库

mysql_fetch_lengths

传回单列各栏资料最大长度。

语法: array mysql_fetch_lengths(int result);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式将 mysql_fetch_row() 处理过的最后一列资料的各栏位资料最大长度放在阵列变数之中。若执行失败则传回 false 值。传回阵列的第一笔资料索引值是 0。

参考

mysql_fetch_row()


函式:mysql_fetch_object()

MySQL 资料库函式库

mysql_fetch_object

传回物件资料。

语法: object mysql_fetch_object(int result, int [result_typ]);

传回值: 物件

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 拆到物件变数中。使用方法和 mysql_fetch_array() 几乎相同，不同的地方在于本函式传回资料是物件而不是阵列。若 result 没有资料，则传回 false 值。另外值得注意的地方是，取回的物件资料的索引只能是文字而不能用数字，这是因为物件的特性。物件资料的特性中所有的属性 (property) 名称都不能是数字，因此只好乖乖使用文字字串当索引了。参数 result_typ是一个常数值，有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。关于速度方面，本函式的处理速度几乎和 mysql_fetch_row() 及 mysql_fetch_array() 二函式差不多，要用哪个函式还是看使用的需求决定。

使用范例

下面的例子示范如使用传回的物件。

<?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("MyDatabase","select * from test");
while($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_free_result($result);
?>

参考


函式:mysql_fetch_row()

MySQL 资料库函式库

mysql_fetch_row

传回单列的各栏位。

语法: array mysql_fetch_row(int result);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 之单列拆到阵列变数中。阵列的索引是数字索引，第一个的索引值是 0。若 result 没有资料，则传回 false 值。

参考


函式:mysql_field_flags()

MySQL 资料库函式库

mysql_field_flags

获得目前栏位的旗标。

语法: string mysql_field_flags(int result, int field_offset);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的旗标。若一个栏位有数种属性旗标，则传回的旗标为这些属性连起来的字串，每个属性都用空格隔开，可以使用 explode() 切开这些字串。传回的旗标可能是：not_null、primary_key、unique_key、multiple_key、blob、unsigned、zerofill、binary、enum、auto_increment、timestamp。


函式:mysql_field_len()

MySQL 资料库函式库

mysql_field_len

获得目前栏位的长度。

语法: int mysql_field_len(int result, int field_offset);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的长度。


函式:mysql_field_name()

MySQL 资料库函式库

mysql_field_name

传回指定栏位的名称。

语法: string mysql_field_name(int result, int field_index);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得指定栏位的名称。

使用范例

mysql_field_name($result,2);


函式:mysql_field_seek()

MySQL 资料库函式库

mysql_field_seek

设定指标到传回值的某栏位。

语法: int mysql_field_seek(int result, int field_offset);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式设定目前的指标到传回值的特定栏位中。

参考

mysql_fetch_field()


函式:mysql_field_table()

MySQL 资料库函式库

mysql_field_table

获得目前栏位的资料表 (table) 名称。

语法: string mysql_field_table(int result, int field_offset);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的资料表名。


函式:mysql_field_type()

MySQL 资料库函式库

mysql_field_type

获得目前栏位的型态。

语法: string mysql_field_type(int result, int field_offset);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的型态格式。传回的字串为栏位的型态，包括了 int、real、string、blob....等等，详见 MySQL 的相关文件中有关于型态的部份。

使用范例

<?php
mysql_connect("localhost:3306");
mysql_select_db("wisconsin");
$result = mysql_query("SELECT * FROM onek");
$fields = mysql_num_fields($result);
$rows = mysql_num_rows($result);
$i = 0;
$table = mysql_field_table($result, $i);
echo "资料表 '".$table."' 有 ".$fields." 栏及 ".$rows." 列。<br>";
echo "本资料表的栏位如下<br>";
while ($i < $fields) {
$type = mysql_field_type ($result, $i);
$name = mysql_field_name ($result, $i);
$len = mysql_field_len ($result, $i);
$flags = mysql_field_flags ($result, $i);
echo $type." ".$name." ".$len." ".$flags."<br>";
$i++;
}
mysql_close();
?>


函式:mysql_free_result()

MySQL 资料库函式库

mysql_free_result

释放传回占用记忆体。

语法: boolean mysql_free_result(int result);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式可以释放目前 MySQL 资料库 query 传回所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式。PHP 程式会在结束时自动释放。


函式:mysql_insert_id()

MySQL 资料库函式库

mysql_insert_id

传回最后一次使用 INSERT 指令的 ID。

语法: int mysql_insert_id(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到最后一次使用 INSERT 到 MySQL 资料库的执行 ID。sleibowitz@btcwcu.org (13-May-1999) 指出在 PHP 3.0.7 版用 REPLACE 也和使用 INSERT 一样，可以使用本函式获得 ID。


函式:mysql_list_dbs()

MySQL 资料库函式库

mysql_list_dbs

列出 MySQL 伺服器可用的资料库 (database)。

语法: int mysql_list_dbs(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到 MySQL 伺服器的可用资料库。


函式:mysql_list_fields()

MySQL 资料库函式库

mysql_list_fields

列出指定资料表的栏位 (field)。

语法: int mysql_list_fields(string database_name, string table_name, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到指定的资料表的所有栏位。传回的栏位资讯可以供 mysql_field_flags()、mysql_field_len()、mysql_field_name() 及 mysql_field_type() 等函式使用。若有错误则传回 -1。


函式:mysql_list_tables()

MySQL 资料库函式库

mysql_list_tables

列出指定资料库的资料表 (table)。

语法: int mysql_list_tables(string database, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到指定资料库中的所有资料表名称。


函式:mysql_num_fields()

MySQL 资料库函式库

mysql_num_fields

取得传回栏位的数目。

语法: int mysql_num_fields(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回栏位的数目。

参考


函式:mysql_num_rows()

MySQL 资料库函式库

mysql_num_rows

取得传回列的数目。

语法: int mysql_num_rows(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回列的数目。

参考


函式:mysql_pconnect()

MySQL 资料库函式库

mysql_pconnect

开启 MySQL 伺服器长期连线。

语法: int mysql_pconnect(string [hostname] [:port], string [username], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式和 mysql_connect() 雷同。不同的地方在于使用本函式开启资料库时，程式会先寻找是否曾经执行过本函式，若执行过则传回先前执行的 ID。另一个不同的地方是本函式无法使用 mysql_close() 关闭资料库。


函式:mysql_query()

MySQL 资料库函式库

mysql_query

送出一个 query 字串。

语法: int mysql_query(string query, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式送出 query 字串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数，则程式会自动寻找最近开启的 ID。当 query 查询字串是 UPDATE、INSERT 及 DELETE 时，传回的可能是 true 或者 false；查询的字串是 SELECT 则传回新的 ID 值。joey@samaritan.com (09-Feb-1999) 指出，当传回 false 时，并不是执行成功但无传回值，而是查询的字串有错误。

参考


函式:mysql_result()

MySQL 资料库函式库

mysql_result

取得查询 (query) 的结果。

语法: int mysql_result(int result, int row, mixed field);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式取得一格 query 的结果。参数 field 可以是栏位名称、顺序或者是 FieldName.TableName 的格式。在传回资料量少时，可以使用本函式来处理。当资料库大时，本函式的效率就有待考量了，这时可以使用较有效率的 mysql_fetch_row()、mysql_fetch_array() 及 mysql_fetch_object() 等函式。


函式:mysql_select_db()

MySQL 资料库函式库

mysql_select_db

选择一个资料库。

语法: int mysql_select_db(string database_name, int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式选择 MySQL 伺服器中的资料库以供之后的资料查询作业 (query) 处理。成功传回 true，失败则传回 false。

参考


函式:mysql_tablename()

MySQL 资料库函式库

mysql_tablename

取得资料表名称。

语法: string mysql_tablename(int result, int i);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可取得资料表名称字串，一般配合 mysql_list_tables() 函式使用，取得该函传回的数字的名称字串。

使用范例

<?php
mysql_connect ("localhost:3306");
$result = mysql_list_tables ("wisconsin");
$i = 0;
while ($i < mysql_num_rows ($result)) {
$tb_names[$i] = mysql_tablename ($result, $i);
echo $tb_names[$i] . "<BR>";
$i++;
}
?>


函式:next()

阵列处理函式库

next

将阵列的内部指标向后移动。

语法: mixed next(array array);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

这个函式传回阵列下个元素的内部指标，若没有下个元素，则传回 false 值。当然，若是一个空的阵列，它也传回 false 值。要正确地处理可能是空的阵列，可以使用 each() 函式。此函式看起来像 current() 函式，不同地方在于本函式使指标往后指到下一个元素，并传回新的指标处的元素值，意即指标后移，并传回下一个元素值。

参考


函式:nl2br()

字串处理函式库

nl2br

将换行字元转成 <br>。

语法: string nl2br(string string);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将换行字元转换成 HTML 换行的 <br> 指令。

参考


函式:number_format()

数学运算函式库

number_format

格式化数字字串。

语法: string number_format(float number, int [decimals], string [dec_point], string [thousands_sep]);

传回值: 字串

函式种类: 数学运算

内容说明

本函式用来将浮点参数 number 格式化。若没加参数 decimals 则传回的字串只要整数部份，加了此参数才依参数指定的小数点位数传回。参数 dec_point 表示小数点的表示方式方法，内定值是 "."，若需要转换成其它的小数点就可以在这个参数改掉。参数 thousands_sep 为整数部份每三位的分隔符号，内定值是 ","。本函式最特别的地方就是参数数目，最少要有一个，也就是欲格式化的字串；也可以有二个或者四个参数，但不能用三个参数。值得注意的是指定小数点的位数之后的数字直接舍弃，没有四舍五入的情形。

使用范例

<?
$short_pi = "3.14159";
$my_pi = number_format($short_pi, 2);
echo $my_pi."\n"; // 3.14
$foo = 850017.9021;
$new_foo = number_format($foo, 3, ".", " ");
echo $new_foo."\n"; // 850 017.902
?>


函式:OCIBindByName()

Oracle 8 资料库函式库

OCIBindByName

让动态 SQL 可使用 PHP 变数。

语法: boolean OCIBindByName(int stmt, string ph_name, mixed &variable, int length, int [type]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来定义指定的 PHP 变数，使其能供动态的 SQL 指令 (Oracle Placeholder) 使用。在大小写的问题上要注意一下，因为 Oracle 资料库中的栏位名称其实都是大写的名字。参数 stmt 是经过 Oracle 解析 (OCIParse) 后的字串指标。参数 ph_name 即为欲供动态 SQL 指令所使用的变数。参数 variable 前面一定要加 & 符号，表 PHP 变数位址。参数 length 为资料的长度，若设为 -1 则使用指定的 variable 资料最大值。参数 type 可省略，其值有 OCI_B_FILE (二进位档)、OCI_B_CFILE (文字档)、OCI_B_CLOB (文字 LOB)、OCI_B_BLOB (位元 LOB) 及 OCI_B_ROWID (ROWID) 等数种。值得注意的是欲使用 Oracle 8 中特有的新资料型态 LOB/ROWID/BFILE 等时，需要先执行 OCINewDescriptor() 函式，同时必须要将 length 参数设成 -1。执行本函式成功则传回 true 值。

使用范例

这个范例是 thies@digicol.de 所提出的，它加入三笔资料到 emp 资料表中，并使用 ROWID 来更新资料。

<?php
$conn = OCILogon("scott", "tiger");
$stmt = OCIParse($conn,"insert into emp (empno, ename) "."values (:empno,:ename) "."returning ROWID into :rid");
$data = array(1111 => "Larry", 2222 => "Bill", 3333 => "Jim");
$rowid = OCINewDescriptor($conn, OCI_D_ROWID);
OCIBindByName($stmt, ":empno", &$empno, 32);
OCIBindByName($stmt, ":ename", &$ename, 32);
OCIBindByName($stmt, ":rid", &$rowid, -1, OCI_B_ROWID);
$update = OCIParse($conn, "update emp set sal = :sal where ROWID = :rid");
OCIBindByName($update, ":rid", &$rowid, -1, OCI_B_ROWID);
OCIBindByName($update, ":sal", &$sal, 32);
$sal = 10000;
while (list($empno, $ename) = each($data)) {
OCIExecute($stmt);
OCIExecute($update);
}
$rowid->free();
OCIFreeStatement($update);
OCIFreeStatement($stmt);
$stmt = OCIParse($conn, "select * from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
while (OCIFetchInto($stmt, &$arr, OCI_ASSOC)) {
var_dump($arr);
}
OCIFreeStatement($stmt);
/* 删除刚加在 emp 资料表中的三笔资料 */
$stmt = OCIParse($conn, "delete from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
OCIFreeStatement($stmt);
OCILogoff($conn);
?>


函式:OCIColumnIsNULL()

Oracle 8 资料库函式库

OCIColumnIsNULL

测试传回行是否为空的。

语法: boolean OCIColumnIsNULL(int stmt, mixed column);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来测试传回的行 (column) 是否为空值 (NULL)。传回 true 表示为空值。


函式:OCIColumnSize()

Oracle 8 资料库函式库

OCIColumnSize

取得栏位型态的大小。

语法: int OCIColumnSize(int stmt, mixed column);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以取得栏位 (column) 型态 (type) 的大小。


函式:OCICommit()

Oracle 8 资料库函式库

OCICommit

将 Oracle 的交易处理付诸实行。

语法: boolean OCICommit(int connection);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式会将最近一次 commit/rollback 后的交易 (transaction) 做永久性的修改。参数 connection 为连上 Oracle 的连线代码。传回值 true 表示成功，false 表示发生错误。


函式:OCIDefineByName()

Oracle 8 资料库函式库

OCIDefineByName

让 SELECT 指令可使用 PHP 变数。

语法: boolean OCIDefineByName(int stmt, string ColumnName, mixed &variable, int [type]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来定义指定的 PHP 变数，使其能供 SQL 指令中的 SELECT 指令使用。在大小写的问题上要注意一下，因为 Oracle 资料库中的栏位名称其实都是大写的名字。参数 stmt 是经过 Oracle 解析 (OCIParse) 后的字串指标。参数 ColumnName 是 Oracle 资料表上的栏位名称。参数 variable 前面一定要加 & 符号，表 PHP 变数位址。参数 type 通常省略。值得注意的是欲使用 Oracle 8 中特有的新资料型态 LOB/ROWID/BFILE 等时，需要先执行 OCINewDescriptor() 函式。执行本函式成功则传回 true 值。

使用范例

这个范例是 thies@digicol.de 所提出的
<?php
$conn = OCILogon("scott","tiger");
$stmt = OCIParse($conn,"select empno, ename from emp");
/* 使用 OCIDefineByName 要在执行 OCIExecute 前 */
OCIDefineByName($stmt,"EMPNO",&$empno);
OCIDefineByName($stmt,"ENAME",&$ename);
OCIExecute($stmt);
while (OCIFetch($stmt)) {
echo "empno:".$empno."\n";
echo "ename:".$ename."\n";
}
OCIFreeStatement($stmt);
OCILogoff($conn);
?>


函式:OCIExecute()

Oracle 8 资料库函式库

OCIExecute

执行 Oracle 的指令区段。

语法: boolean OCIExecute(int statement, int [mode]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来执行指定的 Oracle 指令区段，执行前必须先由 OCIParse() 剖析过该区段的 SQL 语法。参数 statement 为剖析过的代码。参数 mode 可省略，其内定值为 OCI_COMMIT_ON_SUCCESS。传回值 true 表示成功，false 表示发生错误。


函式:OCIFetch()

Oracle 8 资料库函式库

OCIFetch

取得传回资料的一列 (row)。

语法: int OCIFetch(int statement);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得一列非空的资料。参数 statement 为剖析过的代码。传回值 true 表示成功取回一列，false 表示本列是空的或发生其它错误。


函式:OCIFetchInto()

Oracle 8 资料库函式库

OCIFetchInto

取回 Oracle 资料放入阵列。

语法: int OCIFetchInto(array &result, int [mode]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式将对 Oracle 取回的资料放入阵列 result 中。传回每列的栏位数目，若失败则传回 false。参数 mode 可省略，内定值为 OCI_NUM，其它还有 OCI_ASSOC、OCI_RETURN_NULLS 及 OCI_RETURN_LOBS 等。


函式:OCILogOff()

Oracle 8 资料库函式库

OCILogOff

关闭与 Oracle 的连结。

语法: boolean OCILogOff(int connection);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式使 PHP 与 Oracle 的连结结束。参数 connection 为连上 Oracle 的连线代码。传回值 true 表示成功，false 表示发生错误。


函式:OCILogon()

Oracle 8 资料库函式库

OCILogon

开启与 Oracle 的连结。

语法: int OCILogon(string username, string password, string [OCACLE_SID]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式使 PHP 与 Oracle 建立连结。参数 username 与 password 分别为连线的帐号及密码。参数 OCACLE_SID 为资料库名称，可省略。传回值为连线的代码。


函式:OCINewDescriptor()

Oracle 8 资料库函式库

OCINewDescriptor

初始新的 LOB/FILE 描述。

语法: string OCINewDescriptor(int connection , int [type]);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来初始化新的 LOB/FILE 描述值。


函式:OCINumRows()

Oracle 8 资料库函式库

OCINumRows

取得受影响栏位的数目。

语法: int OCINumRows(int statement);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式传回受 UPDATE 等指令影响的栏位 (column) 数目，若使用 SELECT 等 SQL 指令则不会有影响。参数 statement 为剖析过的代码。


函式:OCIParse()

Oracle 8 资料库函式库

OCIParse

分析 SQL 语法。

语法: int OCIParse(int connection, string query);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可用来分析 SQL 语法或是 PL/SQL 区段是否有错误。参数 connection 为连线代码。参数 query 为 SQL 指令字串。


函式:OCIResult()

Oracle 8 资料库函式库

OCIResult

从目前列 (row) 的资料取得一栏 (column)。

语法: string OCIResult(int statement, mixed column);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式传回传回一栏资料。参数 statement 为剖析过的代码。参数 column 为栏位名。若使用新的资料形态 (ROWIDs、LOBs 与 FILEs) 传回亦均为字串。


函式:OCIRollback()

Oracle 8 资料库函式库

OCIRollback

撤消当前交易。

语法: boolean OCIRollback(int connection);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式取消 Oracle 交易处理 (transaction) 对资料库所做的修改。参数 connection 为连上 Oracle 的连线代码。若成功则传回 true，反之传回 false。


函式:OctDec()

数学运算函式库

OctDec

八进位转十进位。

语法: string decoct(int number);

传回值: 字串

函式种类: 数学运算

内容说明

本函式将八进位字串转成十进位数字。由于 PHP 使用 32 位元有正负号整数计算，能处理最大的八进位数字为 17777777777，也就是十进位数字的 2147483647。

参考

DecOct()


函式:odbc_autocommit()

ODBC 资料库连结函式库

odbc_autocommit

开关自动更动功能。

语法: int odbc_autocommit(int connection_id, int [OnOff]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启或关闭自动更新 (auto-commit) 功能。参数 connection_id 为 ODBC 连结的 ID 值。参数 OnOff 可省略，表开启或关闭自动更动功能，内定值为 on，欲关闭则设 off。传回值为目前的自动更新状态，若开启自动更新功能则传回 true；若关闭自动更新功能则传回 false。

参考

odbc_commit() odbc_rollback()

[ 下一页 ]


函式:odbc_binmode()

ODBC 资料库连结函式库

odbc_binmode

设定二进位资料处理方式。

语法: int odbc_binmode(int result_id, int mode);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来设定二进位资料传回时的处理方式。受到本函式影响的资料形态有 BINARY、VARBINARY 及 LONGVARBINARY。参数 result_id 为传回的 ID 值，若设为 0，则程式将设定一个新的 ID 值。参数 mode 为设定的二进位处理方式，有下列的值

  • ODBC_BINMODE_PASSTHRU 传回二进位资料
  • ODBC_BINMODE_RETURN 转成十六进位传回
  • ODBC_BINMODE_CONVERT 转成字串资料传回

注意: 若使用 odbc_fetch_into()，ODBC_BINMODE_PASSTHRU 会导至传回字串值都是空的 (empty)。而传回资料最大值的内定大小为 4096 位元组，若要传回更多的资料需使用 odbc_longreadlen()。

参考


函式:odbc_close()

ODBC 资料库连结函式库

odbc_close

关闭 ODBC 连结。

语法: void odbc_close(int connection_id);

传回值: 无

函式种类: 资料库功能

内容说明

本函式用来关闭与 ODBC 资料库之间的连结。参数 connection_id 为 ODBC 连结代号 ID 值。若正在执行 transactions 则无法关闭连结。


函式:odbc_close_all()

ODBC 资料库连结函式库

odbc_close_all

关闭所有 ODBC 连结。

语法: void odbc_close_all(void);

传回值: 无

函式种类: 资料库功能

内容说明

本函式用来关闭与 ODBC 资料库之间所有的连结。和 odbc_close() 一样，若正在执行 transactions 则无法关闭连结。使用本函式不需要使用任何参数。


函式:odbc_commit()

ODBC 资料库连结函式库

odbc_commit

更动 ODBC 资料库。

语法: int odbc_commit(int connection_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来更动 (commit) ODBC 资料库。参数 connection_id 为 ODBC 连结的 ID 值。若有设定 odbc_autocommit() 成自动更动资料库时，则不需使用本函式。


函式:odbc_connect()

ODBC 资料库连结函式库

odbc_connect

连结至 ODBC 资料库。

语法: int odbc_connect(string dsn, string user, string password, int [cursor_type]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来连结到 ODBC 资料库，传回值为连结的代号 ID 值。参数 dsn 为资料来源名称 (Data Sources Name)。参数 user 及 password 分别为连结的帐号及密码。参数 cursor_type 通常省略，其值有 SQL_CUR_USE_IF_NEEDED、SQL_CUR_USE_ODBC、SQL_CUR_USE_DRIVER 及 SQL_CUR_DEFAULT 等四种。当使用复杂的资料存取时可能会有类似 "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it" 的错误讯息字串，此时若将参数 cursor_type 的值设为 SQL_CUR_USE_ODBC 就可以避开了。

参考

odbc_pconnect()


函式:odbc_cursor()

ODBC 资料库连结函式库

odbc_cursor

取得游标名。

语法: string odbc_cursor(int result_id);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得开启的 ODBC 资料库游标 (cursor)。参数 connection_id 为 ODBC 连结代号 ID 值。传回值为游标的名称字串。


函式:odbc_do()

ODBC 资料库连结函式库

odbc_do

执行 SQL 指令。

语法: int odbc_do(int connection_id, string query);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来执行 SQL 的 query 指令。参数 connection_id 为 ODBC 连结代号 ID 值。参数 query 则为欲执行的指令。传回值为 Result ID 值。

参考


函式:odbc_exec()

ODBC 资料库连结函式库

odbc_exec

执行 SQL 指令。

语法: int odbc_exec(int connection_id, string query);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来执行 SQL 的 query 指令。参数connection_id 为 ODBC 连结代号 ID 值。参数 query 则为欲执行的指令。传回值为 Result ID 值。

参考


函式:odbc_execute()

ODBC 资料库连结函式库

odbc_execute

执行预置 SQL 指令。

语法: int odbc_execute(int result_id, array [parameters_array]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来执行预置在 4.36.20 odbc_prepare() 的 query 指令。参数 result_id 为 ODBC 传回 ID 值。参数 parameters_array 通常省略。

使用范例

这是 tony.wood@revolutionltd.com (27-May-1999) 所提的范例

<?php
$conn=odbc_connect("mydb","","");
$stmt = odbc_prepare($conn, "INSERT INTO mytable (jor_from, jor_to) VALUES('$from', '$to');" );
if (!odbc_execute($stmt)) {
echo "错误";
}
odbc_close($conn);
?>

参考


函式:odbc_fetch_into()

ODBC 资料库连结函式库

odbc_fetch_into

取得传回的指定列。

语法: int odbc_fetch_into(int result_id, int [rownumber], array result_array);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料列，并放入阵列资料之中。参数 result_id 为 ODBC 传回 ID 值。参数 rownumber 为指定的取得列 (row)。阵列参数 result_array 为取得列的资料阵列，通常在前面加上 "&" 符号。例如 vbhunt@silverfox.com 所提供的范例 (27-Sep-1998)

$cols = odbc_fetch_into($QueryID, $RowNum, &$YourArray);


函式:odbc_fetch_row()

ODBC 资料库连结函式库

odbc_fetch_row

取得传回一列。

语法: int odbc_fetch_row(int result_id, int [row_number]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的一列。参数 result_id 为 ODBC 传回 ID 值。参数 rownumber 可省略，为指定的取得列 (row)。

使用范例

<?php
$conn = odbc_connect("WebDB", "", "");
$query = "select user, idno ";
$query .= "from userinfo";
$result_id = odbc_do($conn, $query);
while(odbc_fatch_row($result_id)) {
$user = odbc_result($result_id, 1);
$idno = odbc_result($result_id, 2);
echo $user."的身份证字号为".$idno."<br>\n";
}
odbc_close($conn);
?>


函式:odbc_field_len()

ODBC 资料库连结函式库

odbc_field_len

取得栏位资料长度。

语法: int odbc_field_len(int result_id, int field_number);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的栏位资料长度。参数 result_id 为 ODBC 传回 ID 值。参数 field_number 为指定的栏位，起始值为 1。


函式:odbc_field_name()

ODBC 资料库连结函式库

odbc_field_name

取得栏位名称。

语法: string odbc_fieldname(int result_id, int field_number);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的栏位名称。参数 result_id 为 ODBC 传回 ID 值。参数 field_number 为指定的栏位，起始值为 1。


函式:odbc_field_type()

ODBC 资料库连结函式库

odbc_field_type

取得栏位资料形态。

语法: string odbc_field_type(int result_id, int field_number);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的栏位资料形态。参数 result_id 为 ODBC 传回 ID 值。参数 field_number 为指定的栏位，起始值为 1。


函式:odbc_free_result()

ODBC 资料库连结函式库

odbc_free_result

释出传回资料的记忆体。

语法: int odbc_free_result(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可用来释出传回资料所使用的记忆体，通常在系统记忆体资源不足的情形下才需要使用。参数 result_id 为 ODBC 传回 ID 值。传回值永远都是 true。


函式:odbc_longreadlen()

ODBC 资料库连结函式库

odbc_longreadlen

设定传回栏的最大值。

语法: int odbc_longreadlen(int result_id, int length);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来设定传回资料栏的最大资料值。参数 result_id 为 ODBC 传回 ID 值。参数 length 即为欲设定的长度值，本参数若设为 0，表示不限长度。


函式:odbc_num_fields()

ODBC 资料库连结函式库

odbc_num_fields

取得栏位数目。

语法: int odbc_num_fields(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得传回资料的栏位数目。参数 result_id 为 ODBC 传回 ID 值。若发生错误则传回 -1。


函式:odbc_num_rows()

ODBC 资料库连结函式库

odbc_num_rows

取得传回列数目。

语法: int odbc_num_rows(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得传回列的数目。参数 result_id 为 ODBC 传回 ID 值。若有错误发生则传回 -1。


函式:odbc_pconnect()

ODBC 资料库连结函式库

odbc_pconnect

长期连结至 ODBC 资料库。

语法: int odbc_pconnect(string dsn, string user, string password, int [cursor_type]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来保持长期连结连结到 ODBC 资料库，即使 PHP 程式结束，连结仍然存在，传回值为连结的代号 ID 值。这对连结负责很重的系统可以加快连结的速度。参数 dsn 为资料来源名称 (Data Sources Name)。参数 user 及 password 分别为连结的帐号及密码。参数 cursor_type 通常省略。

参考

odbc_connect()


函式:odbc_prepare()

ODBC 资料库连结函式库

odbc_prepare

预置 SQL 指令。

语法: int odbc_prepare(int connection_id, string query_string);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来设定 SQL query 指令。参数 result_id 为 ODBC 传回 ID 值。参数 query_string 即为预设的指令。

参考

odbc_execute()


函式:odbc_result()

ODBC 资料库连结函式库

odbc_result

取得传回资料。

语法: string odbc_result(int result_id, mixed field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得传回的资料。参数 result_id 为 ODBC 传回 ID 值。参数 field 可以是数字形态，代表指定的栏位序号 (从 1 开始)；亦可以是字串形态，为指定的栏位名称。


函式:odbc_result_all()

ODBC 资料库连结函式库

odbc_result_all

传回 HTML 表格资料。

语法: int odbc_result_all(int result_id, string [format]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来将取得的资料转成 HTML 的表格 (table) 格式。参数 result_id 为 ODBC 传回 ID 值。参数 format 可省略，为表格的特殊设定值。传回值为资料列数。

使用范例

<?php
$conn = odbc_connect("WebDB", "", "");
$query = "select item, price ";
$query .= "from userinfo";
$result_id = odbc_do($conn, $query);
odbc_result_all($result_id, "border=1 width=50%");
odbc_close($conn);
?>


函式:odbc_rollback()

ODBC 资料库连结函式库

odbc_rollback

撤消当前交易。

语法: int odbc_rollback(int connection_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式取消 ODBC 交易处理 (transaction) 对资料库所做的修改。若成功则传回 true，反之传回 false。


函式:odbc_setoption()

ODBC 资料库连结函式库

odbc_setoption

调整 ODBC 设定。

语法: int odbc_setoption(int id, int function, int option, int param);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来调整 ODBC 的设定值。参数 id 不一定指 connection_id，SQLSetConnectOption() 则为 connection_id；若为 SQLSetStmtOption() 则为 result_id。参数 function 值为 1 表 SQLSetConnectOption()；若为 2 则为 SQLSetStmtOption()。参数 option 为设定的选项。参数 param 为设定值。

使用范例

<?
// 例一: 设定为 autocommit，即与 odbc_autocommit($conn, true) 相同。
// 第三个参数值 102 表 SQL_AUTOCOMMIT。
// 第四个参数值 1 表 SQL_AUTOCOMMIT_ON。
odbc_setoption ($conn, 1, 102, 1);
// 例二: 设定查询时间
// 第三个参数 0 表 SQL_QUERY_TIMEOUT
// 第四个参数为最久执行时间，本例设为 30 秒
$result = odbc_prepare ($conn, $sql);
odbc_setoption ($result, 2, 0, 30);
odbc_execute ($result);
?>

[ 上一页 ]


函式:opendir()

目录管理函式库

opendir

开启目录 handle。

语法: int opendir(string path);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来开启目录资料流。传回的整数是可供其它目录函式操作的 handle。


函式:openlog()

网路函式库

openlog

打开系统纪录。

语法: int openlog(string ident, int option, int facility);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式会开启作业系统的纪录机制 (logger)。参数 ident 会加到纪录的字串中。参数 option 的值包括了 LOG_PID、LOG_CONS、LOG_ODELAY、LOG_NDELAY、LOG_NOWAIT、LOG_PERROR，在 Win32 系统中，只有 LOG_PID 有效。参数 facility 的值可能为 LOG_KERN、LOG_USER、LOG_MAIL、LOG_DAEMON、LOG_AUTH、LOG_SYSLOG、LOG_LPR、LOG_NEWS、LOG_UUCP、LOG_CRON 或 LOG_AUTHPRIV，在 Win32 系统上，本参数是无效的栏位。本函式呼叫 UNIX 系统的 openlog() 函数，因此在 Windows 系列的作业系统中，本函式没有完全的实作。

使用范例

<?php
openlog("FUN", LOG_PID | LOG_CONS, LOG_USER);
syslog(LOG_INFO, "Wa ha ha ....");
closelog();
?>

参考


函式:Ora_Bind()

Oracle 资料库函式库

Ora_Bind

连结 PHP 变数到 Oracle 参数。

语法: int ora_bind(int cursor, string PHP variable name, string SQL parameter name, int length, int [type]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式将 PHP 变数与 SQL 参数系结在一起。SQL 参数 (SQL parameter) 必须是类似 ":name" 的型式。语法中的 type 为可省略的参数选项，可以设成下面三种数字之一：0 为内定值，表输入/输出 (in/out)；1 表输入 (in)；2 表输出 (out)。在 PHP 3.0.1 版之后，亦可以使用下列常数代替 type 的三种数字值：ORA_BIND_INOUT、ORA_BIND_IN 或 ORA_BIND_OUT。重要的是本函式应是在 ora_parse() 之后与 ora_exec() 之前呼叫使用。若成功则传回 true，反之传回 false。要处理细部的错误讯息可使用 ora_error() 及 ora_errorcode()。

使用范例

<?php
ora_parse($curs, "declare tmp INTEGER; begin tmp := :in; :out := tmp; :x := 7.77; end;");
ora_bind($curs, "result", ":x", $len, 2);
ora_bind($curs, "input", ":in", 5, 1);
ora_bind($curs, "output", ":out", 5, 2);
$input = 765;
ora_exec($curs);
echo "Result: $result<BR>Out: $output<BR>In: $input";
?>

[ 下一页 ]


函式:Ora_Close()

Oracle 资料库函式库

Ora_Close

关闭一个 Oracle 的 cursor。

语法: int ora_close(int cursor);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式将 ora_open() 开启的游标 (cursor) 关闭。若成功则传回 true，反之传回 false。要处理细部的错误讯息可使用 ora_error() 及 ora_errorcode()。


函式:Ora_ColumnName()

Oracle 资料库函式库

Ora_ColumnName

得到 Oracle 传回列 (Column) 的名称。

语法: string Ora_ColumnName(int cursor, int column);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式传回的名称全都转成英文大写字母。


函式:Ora_ColumnSize()

Oracle 资料库函式库

Ora_ColumnSize

取得栏位型态的大小。

语法: ora_columnsize($curs, $colindex);

函式种类: 资料库功能

内容说明

本函式可以取得栏位 (column) 型态 (type) 的大小。计算从 0 开始。


函式:Ora_ColumnType()

Oracle 资料库函式库

Ora_ColumnType

得到 Oracle 传回列 (Column) 的型态。

语法: string Ora_ColumnType(int cursor, int column);

传回值: 字串

函式种类: 资料库功能

内容说明

传回的型态值为下面型态之一：

  • VARCHAR2
  • VARCHAR
  • CHAR
  • NUMBER
  • LONG
  • LONG RAW
  • ROWID
  • DATE
  • CURSOR


函式:Ora_Commit()

Oracle 资料库函式库

Ora_Commit

将 Oracle 的交易处理付诸实行。

语法: int ora_commit(int conn);

传回值: 整数

函式种类: 资料库功能

内容说明

传回值 true 表示成功，false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。本函式会将最近一次 commit/rollback 后的交易 (transaction) 做永久性的修改，当与 Oracle 资料库连线确认后自动执行功能 (autocommit) 会关闭。


函式:Ora_CommitOff()

Oracle 资料库函式库

Ora_CommitOff

关闭自动执行 Oracle 交易更动的功能。

语法: int ora_commitoff(int conn);

传回值: 整数

函式种类: 资料库功能

内容说明

传回值 true 表示成功，false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。在每次使用 ora_exec() 之后，本函数会关闭自动执行功能。


函式:Ora_CommitOn()

Oracle 资料库函式库

Ora_CommitOn

打开自动执行 Oracle 交易更动的功能。

语法: int ora_commiton(int conn);

传回值: 整数

函式种类: 资料库功能

内容说明

传回值 true 表示成功，false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。在每次使用 ora_exec() 后的连线时，本函数会打开自动执行功能。


函式:Ora_Do()

Oracle 资料库函式库

Ora_Do

快速的 SQL 查询。

语法: Ora_Do($conn, $query);

函式种类: 资料库功能

内容说明

kk@shonline.de (05-Aug-1998) 指出以上 17 个 PHP 的官方公布的函式是 PHP2 就有的，没有加入 PHP3 的新函式。本函式开始是 kk@shonline.de 所整理的函式。本函式结合了 Ora_Parse(), Ora_Exec(), Ora_Fetch() 等功能，提供一次快速的 SQL 查询。


函式:Ora_Error()

Oracle 资料库函式库

Ora_Error

获得 Oracle 错误讯息。

语法: string Ora_Error(int cursor);

传回值: 字串

函式种类: 资料库功能

内容说明

传回类似 XXX-NNNNN 格式的错误讯息，其中的 XXX 表示错误发生的地方 NNNNN 用来验证错误的讯息。在 UNIX 版的 Oracle 上，可以找到类似以下的错误讯息详细说明：

oerr ora 00001

00001, 00000, "unique constraint (%s.%s) violated"
// *Cause: An update or insert statement attempted to insert a duplicate key
//         For Trusted ORACLE configured in DBMS MAC mode, you may see
//         this message if a duplicate entry exists at a different level.
// *Action: Either remove the unique restriction or do not insert the key


函式:Ora_ErrorCode()

Oracle 资料库函式库

Ora_ErrorCode

获得 Oracle 错误代码。

语法: int Ora_ErrorCode(int cursor);

传回值: 整数

函式种类: 资料库功能

内容说明

传回数字型态的错误代码。


函式:Ora_Exec()

Oracle 资料库函式库

Ora_Exec

执行 Oracle 的指令区段。

语法: int ora_exec(int cursor);

传回值: 整数

函式种类: 资料库功能

内容说明

传回值 true 表示成功，false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。


函式:Ora_Fetch()

Oracle 资料库函式库

Ora_Fetch

取得传回资料的一列 (row)。

语法: int ora_fetch(int cursor);

传回值: 整数

函式种类: 资料库功能

内容说明

传回值 true 表示成功取回一列，false 表示本列是空的或发生其它错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。若没有发生错误，ora_errorcode() 会传回 0。


函式:Ora_FetchInto()

Oracle 资料库函式库

Ora_FetchInto

取回 Oracle 资料放入阵列。

语法: Ora_FetchInto($curs, &$ary);

函式种类: 资料库功能

内容说明

本函式将对 Oracle 取回的资料放入阵列 ary 中。传回每列的栏位数目，若失败则传回 false。


函式:Ora_GetColumn()

Oracle 资料库函式库

Ora_GetColumn

从传回列 (row) 的资料取得一栏 (column)。

语法: mixed ora_getcolumn(int cursor, mixed column);

传回值: 混合型态资料

函式种类: 资料库功能

内容说明

传回一栏资料。若发生错误，ora_errorcode() 会传回非 0 的数值。值得注意的是，若传回的是空的字串，或者传回整数 0，均不算错误，程式中必须自行处理这种情形。


函式:Ora_Logoff()

Oracle 资料库函式库

Ora_Logoff

结束与 Oracle 的连结。

语法: int ora_logoff(int connection);

传回值: 整数

函式种类: 资料库功能

内容说明

传回值 true 表示成功，false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。本函式会登出资料库 (Logout) 并结束与 Oracle 伺服器的连结。


函式:Ora_Logon()

Oracle 资料库函式库

Ora_Logon

开启与 Oracle 的连结。

语法: int ora_logon(string user, string password);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式使 PHP 与 Oracle 建立连结。亦可以利用 SQL*Net 提供的 TNS name 连结到远端的资料库，方法如下：

$conn = Ora_Logon("user@TNSNAME", "pass");

连线成功会传回整数的索引值，传回 false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。对美国以外的国家，资料库中可能会有非 ASCII 字元的情形，这时需要在环境变数中加入 NLS_LANG 的变数。例如：若查询传回资料中有中文 BIG5 码的资料，在 ora_logon() 之前加入以下的程式码

putenv("NLS_LANG=american_taiwan.zht16big5");

使用范例

pwalker@pwccanada.com (21-Sep-1998) 提供了这二个范例

1. 连接到与 Web 伺服器同一台的 Oracle 资料库可用
<?
Ora_Logon("system" , "manager"); 或
Ora_Logon("system/manager" , "");
?>

2. 连接到远端 Oracle 伺服器要利用 SQL*Net 或 Net8
<?
Ora_Logon("system/manager@host" , "");
?>


函式:Ora_Numcols()

Oracle 资料库函式库

Ora_Numcols

取得栏位的数目。

语法: ora_numcols($curs);

函式种类: 资料库功能

内容说明

本函式传回栏位 (column) 的数目。这个函式只在执行了 ora_parse()/ora_exec()/ora_fetch() 或是 ora_do() 才有用。


函式:Ora_Open()

Oracle 资料库函式库

Ora_Open

开启 Oracle 的 cursor。

语法: int ora_open(int connection);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式使与 Oracle 连线并打开 cursor。连线成功会传回 cursor 的索引值，传回 false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。


函式:Ora_Parse()

Oracle 资料库函式库

Ora_Parse

分析 SQL 语法。

语法: int ora_parse(int cursor_ind, string sql_statement, int defer);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可用来分析 SQL 语法或是 PL/SQL 区段是否有错误。传回 0 表示无误，传回为 -1 表示有错误发生。


函式:Ora_PLogon()

Oracle 资料库函式库

Ora_PLogon

开启与 Oracle 的长期连结。

语法: int ora_plogon(string user, string password);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式使 PHP 与 Oracle 建立连结，功能与 ora_logon() 函式类似，但使用本函式会一直与资料库连线直到停止 Apache 伺服器，这会使与 Oracle 连线速度更快，但需要更多的记忆体。亦可参考 mysql_pconnect() 获得更多的细节资料。

[ 上一页 ]


函式:Ora_Rollback()

Oracle 资料库函式库

Ora_Rollback

撤消当前交易。

语法: int ora_rollback(int connection);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式取消 Oracle 交易处理 (transaction) 对资料库所做的修改。若成功则传回 true，反之传回 false。要处理细部的错误讯息可使用 ora_error() 及 ora_errorcode()。


函式:Ord()

字串处理函式库

Ord

传回字元的序数值。

语法: int ord(string string);

传回值: 整数

函式种类: 资料处理

内容说明

本函式传回字元的 ASCII (美国国家标准交换码) 序数值。本函式和 chr() 函式相反。

使用范例

<?php
if (ord($str) == 10) {
echo("字串 \$str 的第一个字是换行字元。\n");
}
?>

参考

chr()


函式:pack()

杂项函式库

pack

压缩资料到位元字串之中。

语法: string pack(string format, mixed [args]...);

传回值: 字串

函式种类: 资料处理

内容说明

本函式用来将资料压缩打包到位元的字串之中。本函式和 Perl 的同名函式功能用法完全相同。参数 format 为压缩的格式，见下表

a | 将字串空白以 NULL 字元填满
A | 将字串空白以 SPACE 字元 (空格) 填满
h | 十六进位字串，低位元在前
H | 十六进位字串，高位元在前
c | 有号字元
C | 无号字元
s | 有号短整数 (十六位元，依计算机的位元顺序)
S | 无号短整数 (十六位元，依计算机的位元顺序)
n | 无号短整数 (十六位元, 高位元在后的顺序)
v | 无号短整数 (十六位元, 低位元在后的顺序)
i | 有号整数 (依计算机的顺序及范围)
I | 无号整数 (依计算机的顺序及范围)
l | 有号长整数 (卅二位元，依计算机的位元顺序)
L | 无号长整数 (卅二位元，依计算机的位元顺序)
N | 无号短整数 (卅二位元, 高位元在后的顺序)
V | 无号短整数 (卅二位元, 低位元在后的顺序)
f | 单精确浮点数 (依计算机的范围)
d | 倍精确浮点数 (依计算机的范围)
x | 空位元
X | 倒回一位元
@ | 填入 NULL 字元到绝对位置

使用范例

<?php
print(pack("cccc", 65, 66, 67, 68));
echo "<br>\n";
print(pack("h10", "778899aabb"));
echo "<br>\n";
print(pack("H10", "778899aabb"));
?>

参考

unpack()


函式:parse_str()

字串处理函式库

parse_str

剖析 query 字串成变数。

语法: void parse_str(string str);

传回值: 无

函式种类: 资料处理

内容说明

本函式可将浏览器传回的 GET 方法的 QUERY_STRING 字串剖析。传回的变数名及值就依 QUERY_STRING 的名称及值。

使用范例

<?php
$str = "first=value&second[]=this+works&second[]=another";
parse_str($str);
echo $first; // 显示出 "value" 字串
echo $second[0]; // 显示 "this works" 字串
echo $second[1]; // 显示 "another" 字串
?>


函式:parse_url()

URL 处理函式库

parse_url

剖析 URL 字串。

语法: array parse_url(string url);

传回值: 阵列

函式种类: 资料处理

内容说明

本函式将 URL 字串予以剖析，并将结果传回阵列中。完整的 URL 类似这样子

scheme://user:pass@host:port/path?query。

如 http://john:john1234@john.wilson.gs:88/abcdef.php?a=1234

因此传回的阵列包括了下列元素：scheme、host、port、user、pass、path、query 与 fragment 等。


函式:passthru()

程式执行功能函式库

passthru

执行外部程式并不加处理输出资料。

语法: string passthru(string command, int [return_var]);

传回值: 字串

函式种类: 作业系统与环境

内容说明

本函式类似 Exec() 用来执行 command 指令，并输出结果。若是 return_var 参数存在，则执行 command 之后的状态会填入 return_var 中。若输出的资料是二进位的资料，并且需要输出到浏览器中的话，使用本函式就相当合适了。例如使用 pbmplus 工具来执行指令，并传回二进位的图形资料。可以先设定传回资料的标头 (header) 为 Content-type: image/gif，然后呼叫 pbmplus 程式处理图形资料，并将二进位的图形资料直接传回浏览器。

参考


函式:pclose()

档案系统函式库

pclose

关闭档案。

语法: int pclose(int fp);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来关闭以 popen() 开启的管道档案。而参数 fp 必需是有效的，且使用 popen() 开启的档案。传回结处理档案的结束状态。

参考

popen()


函式:PDF_add_annotation()

PDF 格式档案函式库

PDF_add_annotation

加入注解。

语法: boolean pdf_add_annotation(int pdfid, double llx, double lly, double urx, double ury, string title, string content);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式可将 PDF 档加入注解。参数 (llx, lly)、(urx, ury) 分别为左下及右上的 X, Y 坐标。参数 title 为注解的标题。参数 content 为注解字串。


函式:PDF_add_outline()

PDF 格式档案函式库

PDF_add_outline

目前页面加入书签。

语法: boolean pdf_add_outline(int pdfid, string text);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将目前的页面加入书签 (bookmark)。参数 pdfid 为 PDF 档案代码。参数 text 为书签上的字串。值得注意的是使用本函式要小心，因为 pdflib 和 PHP 在使用本函式的搭配上可能会导致记忆体无法完全释放。


函式:PDF_arc()

PDF 格式档案函式库

PDF_arc

绘弧。

语法: boolean pdf_arc(int pdfid, double x-koor, double y-koor, double radius, double start, double end);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来绘制弧线。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 为弧的圆心 X, Y 坐标。参数 radius 为弧的半径。参数 start 与 end 分别为弧的起始和终点的角度。

参考


函式:PDF_begin_page()

PDF 格式档案函式库

PDF_begin_page

启始 PDF 档案页面。

语法: boolean pdf_begin_page(int pdfid, double height, double width);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来启始 PDF 档案页面，并设定页面大小。参数 pdfid 为 PDF 档案代码。参数 height 与 width 为浮点数形态的数字，分别为 PDF 页面的高度和宽度。成功则传回 true 值。

参考

PDF_end_page()


函式:PDF_circle()

PDF 格式档案函式库

PDF_circle

绘圆。

语法: boolean pdf_circle(int pdfid, double x-koor, double y-koor, double radius);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来绘制圆形。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 为圆心的 X, Y 坐标。参数 radius 为圆的半径。

参考


函式:PDF_clip()

PDF 格式档案函式库

PDF_clip

组合所有向量。

语法: boolean pdf_clip(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式将所有的向量组合在目前使用的向量上。参数 pdfid 为 PDF 档案代码。


函式:PDF_close()

PDF 格式档案函式库

PDF_close

关闭 PDF 档。

语法: boolean pdf_close(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来关闭 PDF 档案。参数 pdfid 为 PDF 档案代码。成功则传回 true 值。


函式:PDF_close_image()

PDF 格式档案函式库

PDF_close_image

关闭图档。

语法: boolean pdf_close_image(int image);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来关闭指定的图片。参数 image 为图片代码。

参考


函式:PDF_closepath()

PDF 格式档案函式库

PDF_closepath

形成封闭的向量形状。

语法: boolean pdf_closepath(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将目前绘制的向量形成封闭区域，意即从目前的坐标点绘一直线到向量的起始坐标点。参数 pdfid 为 PDF 档案代码。


函式:PDF_closepath_fill_stroke()

PDF 格式档案函式库

PDF_closepath_fill_stroke

形成封闭的向量形状沿向量绘线并填满。

语法: boolean pdf_closepath_fill_stroke(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将目前绘制的向量形成封闭区域，并且沿着目前的向量和绘一条线，同时亦使用目前使用的颜色将封闭区域填满。参数 pdfid 为 PDF 档案代码。

参考


函式:PDF_closepath_stroke()

PDF 格式档案函式库

PDF_closepath_stroke

形成封闭的向量形状并沿向量绘线。

语法: boolean pdf_closepath_stroke(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将目前绘制的向量形成封闭区域，并且沿着目前的向量和绘一条线。参数 pdfid 为 PDF 档案代码。

参考


函式:PDF_continue_text()

PDF 格式档案函式库

PDF_continue_text

输出文字。

语法: boolean pdf_continue_text(int pdfid, string text);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式输出文字到下一行。参数 pdfid 为 PDF 档案代码。参数 text 为欲输出显示的文字。成功则传回 true 值。


函式:PDF_curveto()

PDF 格式档案函式库

PDF_curveto

绘贝氏曲线。

语法: boolean pdf_curveto(int pdfid, double x1, double y1, double x2, double y2, double x3, double y3);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来绘制贝氏曲线 (Bezier curve)。参数 pdfid 为 PDF 档案代码。弧线的起点为目前处理坐标点。参数 (x1, y1) 为终点，(x2, y2) 及 (x3, y3) 为曲线的控制点。

参考


函式:PDF_end_page()

PDF 格式档案函式库

PDF_end_page

关闭 PDF 档案页面。

语法: boolean pdf_end_page(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来关闭 PDF 档案页面，并设定页面大小。参数 pdfid 为 PDF 档案代码。成功则传回 true 值。

参考

PDF_begin_page()


函式:PDF_endpath()

PDF 格式档案函式库

PDF_endpath

关闭目前向量。

语法: boolean pdf_endpath(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式将关闭目前使用的向量，但不做连回起点等动作。参数 pdfid 为 PDF 档案代码。


函式:PDF_execute_image()

PDF 格式档案函式库

PDF_execute_image

放置 PDF 档中图片到指定位置。

语法: boolean pdf_execute_image(int pdfid, int image, double x-coor, double y-coor, double scale);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式将放在目前操作的 PDF 档上的暂存图片放指定位置。参数 pdfid 为 PDF 档案代码。参数 image 为图片代码。参数 x-koor 及 y-koor 分别为指定的 X, Y 坐标。参数 scale 为欲设定的间距值，为浮点数。


函式:PDF_fill()

PDF 格式档案函式库

PDF_fill

填满目前的向量。

语法: boolean pdf_fill(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式可将目前的向量内部填上目前使用的颜色。参数 pdfid 为 PDF 档案代码。

参考


函式:PDF_fill_stroke()

PDF 格式档案函式库

PDF_fill_stroke

填满目前的向量并沿向量绘线。

语法: boolean pdf_fill_stroke(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式可将目前的向量内部填上目前使用的颜色，同时并沿着目前的向量和绘一条线。参数 pdfid 为 PDF 档案代码。

参考


函式:PDF_get_info()

PDF 格式档案函式库

PDF_get_info

传回档案资讯。

语法: int pdf_get_info();

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来取得 PDF 的档案资讯，例如作者、主题....等等。需要 pdflib 2.0 以上才能使用本函式的功能。

参考


函式:PDF_lineto()

PDF 格式档案函式库

PDF_lineto

绘直线。

语法: boolean pdf_lineto(int pdfid, double x-koor, double y-koor);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来绘制直线。参数 pdfid 为 PDF 档案代码。直线的起点为目前处理坐标点。参数 x-koor 与 y-koor 为终点的 X, Y 坐标。

参考


函式:PDF_moveto()

PDF 格式档案函式库

PDF_moveto

设定处理的坐标点。

语法: boolean pdf_moveto(int pdfid, double x-koor, double y-koor);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式将目前的处理坐标点移到指定的新位置。参数 pdfid 为 PDF 档案代码。参数 x-koor 及 y-koor 分别为新的坐标 X 及 Y 点。


函式:PDF_open()

PDF 格式档案函式库

PDF_open

建立新的 PDF 档。

语法: int pdf_open(int file, int info);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来开启新的 PDF 档案，意即建立新的 PDF 档。参数 file 为使用 fopen() 所开档的档案代码。参数 info 为 PDF_get_info() 产生的 PDF 档案资讯代码。成功则传回 PDF 档案代码。


函式:PDF_open_gif()

PDF 格式档案函式库

PDF_open_gif

开启 GIF 图档。

语法: int pdf_open_gif(int pdfid, string filename);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来开启 GIF 格式的图形档。参数 pdfid 为 PDF 档案代码。参数 filename 为图档的名称。


函式:PDF_open_jpeg()

PDF 格式档案函式库

PDF_open_jpeg

开启 JPEG 图档。

语法: int pdf_open_jpeg(int pdfid, string filename);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来开启 JPEG 格式的图形档。参数 pdfid 为 PDF 档案代码。参数 filename 为图档的名称。


函式:PDF_open_memory_image()

PDF 格式档案函式库

PDF_open_memory_image

开启记忆体图档。

语法: int pdf_open_memory_image(int pdfid, int image);

传回值: 整数

函式种类: 特殊档案格式

内容说明

本函式用来开启 PHP 程式使用记忆体中的图形。参数 pdfid 为 PDF 档案代码。参数 image 为图形的名称。


函式:PDF_place_image()

PDF 格式档案函式库

PDF_place_image

放置图片到 PDF 档指定位置。

语法: boolean pdf_place_image(int pdfid, int image, double x-koor, double y-koor, double scale);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将图片放在目前操作的 PDF 档上的指定位置。参数 pdfid 为 PDF 档案代码。参数 image 为图片代码。参数 x-koor 及 y-koor 分别为指定的 X, Y 坐标。参数 scale 为欲设定的间距值，为浮点数。


函式:PDF_put_image()

PDF 格式档案函式库

PDF_put_image

放置图片到 PDF 档。

语法: boolean pdf_put_image(int pdfid, int image);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将图片放在目前操作的 PDF 档上，值得注意的是本函式仅暂时放置，实际还需 PDF_execute_image() 函式来配合。参数 pdfid 为 PDF 档案代码。参数 image 为图片代码。

参考


函式:PDF_rect()

PDF 格式档案函式库

PDF_rect

绘长方形。

语法: boolean pdf_rect(int pdfid, double x-koor, double y-koor, double width, double height);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来绘制长方形。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 为长方形的左下角 X, Y 坐标。参数 width 及 height 分别为长方形的宽度及高度。

参考

PDF_stroke()


函式:PDF_restore()

PDF 格式档案函式库

PDF_restore

还原环境变数。

语法: boolean pdf_restore(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来还原之前储存的环境变数，有点像是 postscript 语法中的 grestore 指令，当平移或旋转某一物件又不要影响别的物件时，本函式就很有用了。参数 pdfid 为 PDF 档案代码。

使用范例

以下为部份的例子

<?php
PDF_save($pdf);
// 在这儿旋转物件....等等。
PDF_restore($pdf);
?>

参考

PDF_save()


函式:PDF_rotate()

PDF 格式档案函式库

PDF_rotate

旋转物件。

语法: boolean pdf_rotate(int pdfid, double angle);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将物件旋转。参数 pdfid 为 PDF 档案代码。参数 angle 为旋转角度。


函式:PDF_save()

PDF 格式档案函式库

PDF_save

储存环境变数。

语法: boolean pdf_save(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来储存目前的环境变数，有点像是 postscript 语法中的 gsave 指令，当平移或旋转某一物件又不要影响别的物件时，本函式就很有用了。参数 pdfid 为 PDF 档案代码。本函式通常配合 PDF_restore() 使用。

参考

PDF_restore()


函式:PDF_scale()

PDF 格式档案函式库

PDF_scale

缩放物件。

语法: boolean PDF_scale(int pdfid, double x-koor, double y-koor);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来将物件放大或缩小。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 均为浮点数，分别为 X、Y 的缩放比例。

使用范例

下例先设定 X, Y 均放大 72 倍，再从 (0,0) 画条线到 (1, 1)，形成了 (0, 0) 到 (72, 72) 的线。

<?php
PDF_scale($pdf, 72.0, 72.0);
PDF_lineto($pdf, 1, 1);
PDF_stroke($pdf);
?>


函式:PDF_set_char_spacing()

PDF 格式档案函式库

PDF_set_char_spacing

设定字元间距。

语法: boolean pdf_set_char_spacing(int pdfid, double space);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定字元 (char) 的间距。参数 pdfid 为 PDF 档案代码。参数 space 为浮点数，为欲设定的距离。成功则传回 true 值。


函式:PDF_set_duration()

PDF 格式档案函式库

PDF_set_duration

设定二页的切换时间。

语法: boolean pdf_set_duration(int pdfid, double duration);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定页与页的切换时间。参数 pdfid 为 PDF 档案代码。参数 duration 为换页的秒数。


函式:PDF_set_font()

PDF 格式档案函式库

PDF_set_font

设定使用的字型及大小。

语法: boolean pdf_set_font(int pdfid, string fontname, double size, int encoding);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定指定的字型及字型大小，供程式有关字串输出使用。参数 pdfid 为 PDF 档案代码。参数 fontname 为字型名称。参数 size 为字型大小。参数 encoding 的内定值为 4，其数字如下 0 表 builtin、1 为 pdfdoc、2 为 macroman、3 表 macexpert 与 4 为 winansi。成功则传回 true 值。本函式需要 pdflib 2.0 以上方可支援。


函式:PDF_set_horiz_scaling()

PDF 格式档案函式库

PDF_set_horiz_scaling

设定文字水平间距。

语法: boolean pdf_set_horiz_scaling(int pdfid, double scale);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定文字的水平间距。参数 pdfid 为 PDF 档案代码。参数 scale 为欲设定的间距值，为浮点数。


函式:PDF_set_info_author()

PDF 格式档案函式库

PDF_set_info_author

设定档案作者。

语法: void pdf_set_info_author(int info, string author);

传回值: 无

函式种类: 特殊档案格式

内容说明

本函式用来设定 PDF 档案的作者。参数 info 为 PDF 档案资讯代码，供 PDF_open() 所使用的代码。参数 author 为欲设定的档案作者名字。需要 pdflib 2.0 以上才能使用本函式的功能。


函式:PDF_set_info_creator()

PDF 格式档案函式库

PDF_set_info_creator

设定建档者字串。

语法: void pdf_set_info_creator(int info, string creator);

传回值: 无

函式种类: 特殊档案格式

内容说明

本函式用来设定 PDF 的建立档案者资讯。参数 info 为 PDF 档案资讯代码，供 PDF_open() 所使用的代码。参数 creator 为建档者名称。需要 pdflib 2.0 以上才能使用本函式的功能。


函式:PDF_set_info_keywords()

PDF 格式档案函式库

PDF_set_info_keywords

设定档案的关键字。

语法: void pdf_set_info_keywords(int info, string keywords);

传回值: 无

函式种类: 特殊档案格式

内容说明

本函式用来设定 PDF 档案的关键字 (keyword)。参数 info 为 PDF 档案资讯代码，供 PDF_open() 所使用的代码。参数 keywords 为欲设定的档案关键字字串。需要 pdflib 2.0 以上才能使用本函式的功能。


函式:PDF_set_info_subject()

PDF 格式档案函式库

PDF_set_info_subject

设定档案主题。

语法: void pdf_set_info_subject(int info, string subject);

传回值: 无

函式种类: 特殊档案格式

内容说明

本函式用来设定 PDF 的档案主题 (subject)。参数 info 为 PDF 档案资讯代码，供 PDF_open() 所使用的代码。参数 subject 为欲设定的档案主题字串。需要 pdflib 2.0 以上才能使用本函式的功能。


函式:PDF_set_info_title()

PDF 格式档案函式库

PDF_set_info_title

设定档案标题。

语法: void pdf_set_info_title(int info, string title);

传回值: 无

函式种类: 特殊档案格式

内容说明

本函式用来设定 PDF 的档案标题 (title)。参数 info 为 PDF 档案资讯代码，供 PDF_open() 所使用的代码。参数 title 为欲设定的档案标头字串。需要 pdflib 2.0 以上才能使用本函式的功能。


函式:PDF_set_leading()

PDF 格式档案函式库

PDF_set_leading

设定行距。

语法: boolean pdf_set_leading(int pdfid, double distance);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定输出文字间的行距。参数 pdfid 为 PDF 档案代码。参数 distance 为欲设定的行距值，为浮点数。使用本函式后会影响到 PDF_continue_text() 所输出的字串。执行成功则传回 true 值。

参考

PDF_continue_text()


函式:PDF_set_text_matrix()

PDF 格式档案函式库

PDF_set_text_matrix

设定文字矩阵。

语法: boolean pdf_set_text_matrix(int pdfid, array matrix);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定文字的矩阵。参数 pdfid 为 PDF 档案代码。参数 matrix 为阵列，最多可有六个元素。


函式:PDF_set_text_pos()

PDF 格式档案函式库

PDF_set_text_pos

设定文字位置。

语法: boolean pdf_set_text_pos(int pdfid, double x-koor, double y-koor);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定文字的显示位置。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 均为浮点数，分别为 X、Y 的座标。在使用本函式后的 PDF_show() 会受到影响。成功则传回 true 值。


函式:PDF_set_text_rendering()

PDF 格式档案函式库

PDF_set_text_rendering

设定文字表现方式。

语法: boolean pdf_set_text_rendering(int pdfid, int mode);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定输出文字间的表现方法。参数 pdfid 为 PDF 档案代码。参数 mode 为 render 的方式，值如下表

数值 | 方式
0 | 实心文字
1 | 空心文字
2 | 填满及空心文字
3 | 透明文字
4 | 实心文字并裁切向量
5 | 空心文字并裁切向量
6 | 填满及空心文字并裁切向量
7 | 裁切向量

执行成功则传回 true 值。


函式:PDF_set_text_rise()

PDF 格式档案函式库

PDF_set_text_rise

设定文字高度。

语法: boolean pdf_set_text_rise(int pdfid, double value);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定文字的高度。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的高度，为浮点数。


函式:PDF_set_transition()

PDF 格式档案函式库

PDF_set_transition

设定页的转换。

语法: boolean pdf_set_transition(int pdfid, int transition);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定页的转换模式。参数 pdfid 为 PDF 档案代码。参数 transition 为转换方式，内定值为 7。


函式:PDF_set_word_spacing()

PDF 格式档案函式库

PDF_set_word_spacing

设定字间距。

语法: boolean pdf_set_word_spacing(int pdfid, double space);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定字 (word) 的间距。参数 pdfid 为 PDF 档案代码。参数 space 为浮点数，为欲设定的距离。成功则传回 true 值。


函式:PDF_setdash()

PDF 格式档案函式库

PDF_setdash

设定虚线样式。

语法: boolean pdf_setdash(int pdfid, double white, double black);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定虚线的样式。参数 pdfid 为 PDF 档案代码。参数 white 及 black 分别为虚线的白色及黑色部份单位长度，若这二个参数均为 0 则表示实线。


函式:PDF_setflat()

PDF 格式档案函式库

PDF_setflat

设定平滑值。

语法: boolean pdf_setflat(int pdfid, double value);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定平滑值。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的平滑值，范围为 0 至 100。


函式:PDF_setgray()

PDF 格式档案函式库

PDF_setgray

指定绘图的颜色为灰阶并填入。

语法: boolean pdf_setgray(int pdfid, double value);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定目前的绘图颜色为灰阶的颜色。参数 pdfid 为 PDF 档案代码。参数 value 为灰阶值。

参考

PDF_setrgbcolor()


函式:PDF_setgray_fill()

PDF 格式档案函式库

PDF_setgray_fill

指定填入的颜色为灰阶。

语法: boolean pdf_setgray_fill(int pdfid, double value);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定灰阶为填色函式所使用的颜色。参数 pdfid 为 PDF 档案代码。参数 value 为灰阶值。


函式:PDF_setgray_stroke()

PDF 格式档案函式库

PDF_setgray_stroke

指定绘图的颜色为灰阶。

语法: boolean pdf_setgray_stroke(int pdfid, double value);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定目前的绘图颜色为灰阶的颜色。参数 pdfid 为 PDF 档案代码。参数 value 为灰阶值。

参考

PDF_setrgbcolor_stroke()


函式:PDF_setlinecap()

PDF 格式档案函式库

PDF_setlinecap

设定 linecap 参数。

语法: boolean pdf_setlinecap(int pdfid, int value);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定 linecap 参数。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的值，范围为 0 至 2。


函式:PDF_setlinejoin()

PDF 格式档案函式库

PDF_setlinejoin

设定连线参数。

语法: boolean pdf_setlinejoin(int pdfid, int value);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定连线 (linejoin) 参数。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的值，范围为 0 至 2。


函式:PDF_setlinewidth()

PDF 格式档案函式库

PDF_setlinewidth

设定线宽。

语法: boolean pdf_setlinewidth(int pdfid, double width);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定线的宽度。参数 pdfid 为 PDF 档案代码。参数 width 为欲设定的宽度值。


函式:PDF_setmiterlimit()

PDF 格式档案函式库

PDF_setmiterlimit

设定斜边界限。

语法: boolean pdf_setmiterlimit(int pdfid, double value);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定斜边界线。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的值，其值大于或者等于 1。


函式:PDF_setrgbcolor()

PDF 格式档案函式库

PDF_setrgbcolor

指定绘图的颜色为彩色并填入。

语法: boolean pdf_setrgbcolor(int pdfid, double red, double green, double blue);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定目前的绘图颜色为彩色。参数 pdfid 为 PDF 档案代码。参数 red、green 与 blue 分别为三原色值，即红绿蓝 (RGB)。

参考

PDF_setgray()


函式:PDF_setrgbcolor_fill()

PDF 格式档案函式库

PDF_setrgbcolor_fill

指定填入的颜色为彩色。

语法: boolean pdf_setrgbcolor_fill(int pdfid, double red, double green, double blue);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定彩色为填色函式所使用的颜色。参数 pdfid 为 PDF 档案代码。参数 red、green 与 blue 分别为三原色值，即红绿蓝 (RGB)。


函式:PDF_setrgbcolor_stroke()

PDF 格式档案函式库

PDF_setrgbcolor_stroke

指定绘图的颜色为彩色。

语法: boolean pdf_setrgbcolor_stroke(int pdfid, double red, double green, double blue);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来设定目前的绘图颜色为彩色。参数 pdfid 为 PDF 档案代码。参数 red、green 与 blue 分别为三原色值，即红绿蓝 (RGB)。

参考

PDF_setgray_stroke()


函式:PDF_show()

PDF 格式档案函式库

PDF_show

输出字串到 PDF 档案。

语法: boolean pdf_show(int pdfid, string text);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来送出文字字串到 PDF 档案中。参数 pdfid 为 PDF 档案代码。参数 text 为欲加入的字串。成功则传回 true 值。

参考


函式:PDF_show_xy()

PDF 格式档案函式库

PDF_show_xy

输出字串到指定坐标。

语法: boolean pdf_show_xy(int pdfid, string text, double x-koor, double y-koor);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来送出文字字串到 PDF 档案中的指定坐标上。参数 pdfid 为 PDF 档案代码。参数 text 为欲加入的字串。参数 x-koor 及 y-koor 分别为 X, Y 二点坐标，为浮点数型态。成功则传回 true 值。

参考


函式:PDF_stringwidth()

PDF 格式档案函式库

PDF_stringwidth

计算字串的宽度。

语法: double pdf_stringwidth(int pdfid, string text);

传回值: 浮点数

函式种类: 特殊档案格式

内容说明

本函式用来计算指定字串的宽度。参数 pdfid 为 PDF 档案代码。参数 text 为欲计算的文字。成功则传回 true 值。


函式:PDF_stroke()

PDF 格式档案函式库

PDF_stroke

沿向量绘线。

语法: boolean pdf_stroke(int pdfid);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式会沿着目前的向量和绘一条线。参数 pdfid 为 PDF 档案代码。

参考


函式:PDF_translate()

PDF 格式档案函式库

PDF_translate

移动原点。

语法: boolean pdf_translate(int pdfid, double x-koor, double y-koor);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式用来移动原点。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 均为浮点数，分别为 X、Y 的移动距离。

使用范例

下例先从 (0,0) 画条线到 (100, 100)，再将原点向 X、Y 移动 (100, 100), 再画条 (0, 0) 至 (100, 100) 的线，形成 (-100, -100) 到 (100, 100) 的线。程式的前后省略。

<?php
PDF_moveto($pdf, 0, 0);
PDF_lineto($pdf, 100, 100);
PDF_stroke($pdf);
PDF_translate($pdf, 100, 100);
PDF_moveto($pdf, 0, 0);
PDF_lineto($pdf, 100, 100);
PDF_stroke($pdf);
?>


函式:pfsockopen()

网路函式库

pfsockopen

打开网路的 Socket 持续连结。

语法: int pfsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);

传回值: 整数

函式种类: 网路系统

内容说明

本函式和 fsockopen() 类似，但本函式在 PHP 程式结束时，不会将网路 socket 连结关闭，仍保持连线。用这种方式，可以增加效率，但较耗系统资源。


函式:pg_Close()

PostgreSQL 资料库函式库

pg_Close

关闭 PostgreSQL 伺服器连线。

语法: boolean pg_close(int connection);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式关闭与 PostgreSQL 伺服器的连线。参数 connection 为连线代码。成功传回 true、失败传回 false 值。


函式:pg_cmdTuples()

PostgreSQL 资料库函式库

pg_cmdTuples

取得被 SQL 指令影响的资料笔数。

语法: int pg_cmdtuples(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得 PostgreSQL 的 SQL 指令所影响的资料笔数，这些 query 指令包括 INSERT、UPDATE 与 DELETE 等。传回值为影响的笔数，若没有资料受影响则传回 0。

使用范例

本例为部份的程式

<?php
$result = pg_exec($conn, "INSERT INTO verlag VALUES ('Autor')");
$cmdtuples = pg_cmdtuples($result);
echo $cmdtuples." 笔资料受影响<p>\n";
?>


函式:pg_Connect()

PostgreSQL 资料库函式库

pg_Connect

开启 PostgreSQL 伺服器连线。

语法: int pg_connect(string [host], string [port], string [options], string [tty], string database);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式打开与 PostgreSQL 伺服器的连线。参数 host 表伺服器名称。参数 port 为连线埠。参数 options 为选项。参数 tty 为终端机。参数 database 为资料库名。成功传回连线代号、失败传回 false 值。

使用范例

<?
pg_connect("dbname=testdb user=wilson password=haha port=5433");
// 以下略
?>

参考

pg_pConnect()


函式:pg_DBname()

PostgreSQL 资料库函式库

pg_DBname

取得目前的资料库名称。

语法: string pg_dbname(int connection);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 PostgreSQL 目前使用的资料库 (database) 名称。参数 connection 为连线代码。


函式:pg_ErrorMessage()

PostgreSQL 资料库函式库

pg_ErrorMessage

传回错误讯息。

语法: string pg_errormessage(int connection);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以取得 PostgreSQL 伺服器的错误讯息。参数 connection 为连线代码。


函式:pg_Exec()

PostgreSQL 资料库函式库

pg_Exec

执行 query 指令。

语法: int pg_exec(int connection, string query);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来执行指定的 query 指令。参数 connection 为连线代码。参数 query 为欲执行的指令。


函式:pg_Fetch_Array()

PostgreSQL 资料库函式库

pg_Fetch_Array

传回阵列资料。

语法: array pg_fetch_array(int result, int row);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料，则传回 false 值。参数 result 为使用 pg_Exec() 所传回的代码值。参数 row 为列数。

使用范例

<?php
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
echo "错误, 无法连线\n";
exit;
}
$result = pg_Exec($conn, "SELECT * FROM authors");
if (!$result) {
echo "错误, 无法查询\n";
exit;
}
$arr = pg_fetch_array($result, 0);
echo $arr[0]." <- array\n";
$arr = pg_fetch_array ($result, 1);
echo $arr["author"] . " <- array\n";
?>


函式:pg_Fetch_Object()

PostgreSQL 资料库函式库

pg_Fetch_Object

传回物件资料。

语法: object pg_fetch_object(int result, int row);

传回值: 物件

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 拆到物件变数中。若 result 没有资料，则传回 false 值。参数 result 为使用 pg_Exec() 所传回的代码值。参数 row 为列数。

使用范例

<?php
$database = "verlag";
$db_conn = pg_connect("localhost", "5432", "", "", $database);
if (!$db_conn): ?>
 <b>无法连上 <? echo $database ?> 资料库</b><?php
exit;
endif;

$qu = pg_exec ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0;

while ($data = pg_fetch_object ($qu, $row)):
echo $data->autor." (";
echo $data->jahr ."): ";
echo $data->titel."<BR>";
$row++;
endwhile; ?>

<pre><?php
$fields[] = Array("autor", "Author");
$fields[] = Array("jahr", " Year");
$fields[] = Array("titel", " Title");
$row = 0;
while ($data = pg_fetch_object($qu, $row)):
echo "<hr><p>\n";
reset ($fields);
while (list (,$item) = each($fields)):
echo $item[1].": ".$data->$item[0]."\n";
endwhile;
$row++;
endwhile;
echo "<p><hr>"; ?>
</pre><?php
pg_freeResult($qu);
pg_close($db_conn);
?>


函式:pg_Fetch_Row()

PostgreSQL 资料库函式库

pg_Fetch_Row

传回单列的各栏位。

语法: array pg_fetch_row(int result, int row);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 之单列拆到阵列变数中。阵列的索引是数字索引，第一个的索引值是 0。若 result 没有资料，则传回 false 值。参数 row 表列数。

使用范例

<?php
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
echo "连线失败\n";
exit;
}
$result = pg_Exec($conn, "SELECT * FROM authors");
if (!$result) {
echo "查询失败\n";
exit;
}
$row = pg_fetch_row($result, 0);
echo $row[0] . " <- row\n";

$row = pg_fetch_row($result, 1);
echo $row[0] . " <- row\n";

$row = pg_fetch_row($result, 2);
echo $row[1] . " <- row\n";
?>

参考


函式:pg_FieldIsNull()

PostgreSQL 资料库函式库

pg_FieldIsNull

检查栏位是否有资料。

语法: int pg_fieldisnull(int result, int row, mixed field);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可检查指定的栏位是否有资料。参数 result 为查询结果代码。参数 row 为指定列数，第一个的索引值是 0。参数 field 为指定的栏位。传回 0 表示有资料，传回 1 表示无资料 (Null)。


函式:pg_FieldName()

PostgreSQL 资料库函式库

pg_FieldName

传回指定栏位的名称。

语法: string pg_fieldname(int result, int field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得指定栏位的名称。参数 result 为查询结果代码。参数 field 为指定的栏位，第一栏为 0。


函式:pg_FieldNum()

PostgreSQL 资料库函式库

pg_FieldNum

取得指定栏位的行数。

语法: int pg_fieldnum(int result, mixed field);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得指定栏位的行数。参数 result 为查询结果代码。参数 field 为指定的栏位，第一栏为 0。若有错误则传回 -1 值。


函式:pg_FieldPrtLen()

PostgreSQL 资料库函式库

pg_FieldPrtLen

计算可列示的长度。

语法: int pg_fieldprtlen(int result, int row, mixed field);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得指定栏位的可列示字元长度。参数 result 为查询结果代码。参数 row 表指定的列。参数 field 为指定的栏位，第一栏为 0。若有错误则传回 -1 值。


函式:pg_FieldSize()

PostgreSQL 资料库函式库

pg_FieldSize

计算指定栏位的长度。

语法: int pg_fieldsize(int result, mixed field);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得指定栏位的长度 (位元组)。参数 result 为查询结果代码。参数 field 为指定的栏位，第一栏为 0。若有错误则传回 -1 值。


函式:pg_FieldType()

PostgreSQL 资料库函式库

pg_FieldType

获得目前栏位的型态。

语法: string pg_fieldtype(int result, mixed field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式可以得到目前所在栏位的型态格式。传回的字串为栏位的型态，包括了 int、real、string....等等。参数 result 为查询结果代码。参数 field 为指定的栏位，第一栏为 0。若有错误则传回 -1 值。


函式:pg_FreeResult()

PostgreSQL 资料库函式库

pg_FreeResult

释放传回占用记忆体。

语法: boolean pg_freeresult(int result);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式可以释放目前 PostgreSQL 资料库 query 传回所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式。PHP 程式会在结束时自动释放。参数 result 为查询结果代码。


函式:pg_GetLastOid()

PostgreSQL 资料库函式库

pg_GetLastOid

取得最后的物件代码。

语法: int pg_getlastoid(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式获取最后的物件代码，物件是由 pg_Exec() 所执行的 INSERT SQL 指令产生的。参数 result 为查询结果代码。若不是由 pg_Exec() 的 INSERT 产生物件，则会产生错误，传回 -1 值。


函式:pg_Host()

PostgreSQL 资料库函式库

pg_Host

取得连线机器名称。

语法: string pg_host(int connection);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得目前连线中的 PostgreSQL 伺服器名称。参数 connection 为连线代码。


函式:pg_loclose()

PostgreSQL 资料库函式库

pg_loclose

关闭大型物件。

语法: void pg_loclose(int fd);

传回值: 无

函式种类: 资料库功能

内容说明

本函式用来关闭大型物件 (Inversion Large Object)。参数 fd 是由 pg_loopen() 所开启的档案代码。


函式:pg_locreate()

PostgreSQL 资料库函式库

pg_locreate

建立大型物件。

语法: int pg_locreate(int connection);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来建立大型物件 (Inversion Large Object)。参数 connection 为连线代码。PostgreSQL 资料库的存取模式只有 INV_READ、INV_WRITE 二种，INV_ARCHIVE 已经从 PostgreSQL 6.3 之后的版本移除。传回值为物件代码。


函式:pg_loopen()

PostgreSQL 资料库函式库

pg_loopen

开启大型物件。

语法: int pg_loopen(int connection, int objoid, string mode);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启大型物件 (Inversion Large Object)。参数 connection 为连线代码。参数 objoid 为物件代码。参数 mode 的值有唯读 (r)、唯写 (w) 及可读写 (rw) 等三种。传回值为档案代码。


函式:pg_loread()

PostgreSQL 资料库函式库

pg_loread

读取大型物件。

语法: string pg_loread(int fd, int len);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来读取大型物件 (Inversion Large Object)。参数 fd 为物件的档案代码。参数 len 为欲读取的最大长度。


函式:pg_loreadall()

PostgreSQL 资料库函式库

pg_loreadall

读取大型物件并输出。

语法: void pg_loreadall(int fd);

传回值: 无

函式种类: 资料库功能

内容说明

本函式用来读取大型物件 (Inversion Large Object)，并将结果输出到标准输出设备中。参数 fd 为物件的档案代码。


函式:pg_lounlink()

PostgreSQL 资料库函式库

pg_lounlink

删除大型物件。

语法: void pg_lounlink(int connection, int lobjid);

传回值: 无

函式种类: 资料库功能

内容说明

本函式用来删除大型物件 (Inversion Large Object)。参数 connection 为连线代码。参数 objoid 为物件代码。


函式:pg_lowrite()

PostgreSQL 资料库函式库

pg_lowrite

读取大型物件。

语法: int pg_lowrite(int fd, string buf);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来写入大型物件 (Inversion Large Object)。参数 fd 为物件的档案代码。参数 buf 为欲写入物件的字串。若有错误则传回 false 值，正确则传回写入字串的位元组 (byte) 数。


函式:pg_NumFields()

PostgreSQL 资料库函式库

pg_NumFields

取得传回栏位的数目。

语法: int pg_numfields(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回栏位的数目。参数 result 为 PostgreSQL 伺服器执行 query 的传回代码。若有错误则传回 -1。


函式:pg_NumRows()

PostgreSQL 资料库函式库

pg_NumRows

取得传回列的数目。

语法: int pg_numrows(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回列的数目。参数 result 为 PostgreSQL 伺服器执行 query 的传回代码。若有错误则传回 -1。


函式:pg_Options()

PostgreSQL 资料库函式库

pg_Options

取得连线机器选项。

语法: string pg_options(int connection);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得目前连线中 PostgreSQL 伺服器的选项。参数 connection 为连线代码。


函式:pg_pConnect()

PostgreSQL 资料库函式库

pg_pConnect

开启 PostgreSQL 伺服器长期连线。

语法: int pg_pconnect(string [host], string [port], string [options], string [tty], string database);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式打开与 PostgreSQL 伺服器的长期连线。参数 host 表伺服器名称。参数 port 为连线埠。参数 options 为选项。参数 tty 为终端机。参数 database 为资料库名。成功传回连线代号、失败传回 false 值。本函式和 pg_Connect() 不同的地方在于使用本函式开启资料库时，程式会先寻找是否曾经执行过本函式，若执行过则传回先前执行的 ID。此外程式结束后并不会关闭连线，而是等下次程式使用。

参考

pg_Connect()


函式:pg_Port()

PostgreSQL 资料库函式库

pg_Port

取得连线机器埠号。

语法: int pg_port(int connection);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得目前连线中 PostgreSQL 伺服器的埠号。参数 connection 为连线代码。


函式:pg_Result()

PostgreSQL 资料库函式库

pg_Result

取得查询 (query) 的结果。

语法: mixed pg_result(int result, int row, mixed field);

传回值: 混合型态资料

函式种类: 资料库功能

内容说明

本函式取得一格 query 的结果。参数 field 可以是栏位名称、顺序或者是 FieldName.TableName 的格式。


函式:pg_tty()

PostgreSQL 资料库函式库

pg_tty

取得连线机器终端机。

语法: string pg_tty(int connection);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得目前连线中 PostgreSQL 伺服器的终端机名称，供除错等使用。参数 connection 为连线代码。


函式:phpinfo()

PHP 选项及相关资讯函式库

phpinfo

传回 PHP 所有相关资讯。

语法: int phpinfo(void);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式传回 PHP 的所有资讯。包括了 PHP 的编译选项及扩充设定、PHP 版本、伺服器资讯及环境变数、PHP 环境变数、作业系统版本资讯、路径及环境变数设定、HTTP 标头、及版权宣告。

参考

phpversion()


函式:phpversion()

PHP 选项及相关资讯函式库

phpversion

传回 PHP 版本讯息。

语法: string phpversion(void);

传回值: 字串

函式种类: PHP 系统功能

内容说明

本函式传回 PHP 的版本资讯。

使用范例

下例传回值类似 '本站使用 PHP 版本为: 3.0.11'

<?php
echo "本站使用 PHP 版本为: ".phpversion();
?>

参考

phpinfo()


函式:pi()

数学运算函式库

pi

圆周率。

语法: double pi(void);

传回值: 倍精确数

函式种类: 数学运算

内容说明

本函式传回圆周率。不需输入参数。


函式:popen()

档案系统函式库

popen

开启档案。

语法: int popen(string command, string mode);

传回值: 整数

函式种类: 档案存取

内容说明

本函式执行指令开档，而该档案是用管道方式处理的档案。用本函式开启的档案只能是单向的 (只能读或只能写)，而且一定要用 pclose() 关闭。在档案操作上可使用 fgets()、fgetss() 与 fputs()。若是开档发生错误，传回 false 值。

使用范例

<?
$fp = popen( "/bin/ls", "r" );
?>

参考

pclose()


函式:pos()

阵列处理函式库

pos

传回阵列目前的元素。

语法: mixed pos(array array);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

此函式其实就是 current() 函式。

参考


函式:pow()

数学运算函式库

pow

次方。

语法: float pow(float base, float exp);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式计算次方值。参数 base 为基底，exp 为幂数。

使用范例

<?php
print(pow(2,3)); // 8
print(pow(5,4)); // 625
?>

参考


函式:preg_match()

Perl 相容语法函式库

preg_match

字串比对剖析。

语法: int preg_match(string pattern, string subject, array [matches]);

传回值: 整数/阵列

函式种类: 资料处理

内容说明

本函式以 pattern 的规则来剖析比对字串 subject。比对结果传回的值放在阵列参数 matches 之中，matches[0] 内容就是原字串 subject、matches[1] 为第一个合乎规则的字串、matches[2] 就是第二个合乎规则的字串，余类推。若省略参数 matches，则只是单纯地比对，找到则传回值为 true。


函式:preg_match_all()

Perl 相容语法函式库

preg_match_all

字串整体比对剖析。

语法: int preg_match_all(string pattern, string subject, array matches, int [order]);

传回值: 整数

函式种类: 资料处理

内容说明

本函式以 pattern 的规则来整体剖析比对字串 subject。比对结果传回的值放在阵列参数 matches 之中，并依顺序值 order 排序。参数 order 的值有 PREG_PATTERN_ORDER 及 PREG_SET_ORDER 二种。若没有 order 值，则系统自动以 PREG_PATTERN_ORDER 代入 order 值中。传回值为合乎比对结果的数目，若没有或错误则传回 false 值。

使用范例

PREG_PATTERN_ORDER 的例子

<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<div align=left>a test</div>", $out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n"
?>

传回值为

<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test

PREG_SET_ORDER 的例子

<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<div align=left>a test</div>", $out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n"
?>

传回值为

<b>example: </b>, example:
<div align=left>this is a test</div>, this is a test


函式:preg_replace()

Perl 相容语法函式库

preg_replace

字串比对剖析并取代。

语法: mixed preg_replace(mixed pattern, mixed replacement, mixed subject);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

本函式以 pattern 的规则来剖析比对字串 subject，欲取而代之的字串为参数 replacement。传回值为混合型态资料，为取代后的字串结果。

使用范例

下例传回值为 $startDate = 6/19/1969

<?php
$patterns = array("/(19|20\d{2})-(\d{1,2})-(\d{1,2})/", "/^\s*{(\w+)}\s*=/");
$replace = array("\\3/\\4/\\1", "$\\1 =");
print preg_replace($patterns, $replace, "{startDate} = 1969-6-19");
?>


函式:preg_split()

Perl 相容语法函式库

preg_split

将字串依指定的规则切开。

语法: array preg_split(string pattern, string subject, int [limit]);

传回值: 阵列

函式种类: 资料处理

内容说明

本函式可将字串依指定的规则分开。切开后的传回值为阵列变数。参数 pattern 为指定的规则字串、参数 subject 则为待处理的字串、参数 limit 可省略，表示欲处理的最多合乎值。


函式:prev()

阵列处理函式库

prev

将阵列的内部指标往前移动。

语法: mixed prev(array array);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

这个函式传回阵列前一个元素的内部指标，若没有前一个元素，则传回 false 值。当然，若是一个空的阵列，它也传回 false 值。要正确地处理可能是空的阵列，可以使用 each() 函式。此函式有点像 next() 函式，只是 prev() 函式是将指标往前移，而 next() 函式是将指标往后移。

参考


函式:print()

字串处理函式库

print

输出字串。

语法: boolean print(string arg);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式输出字串。若成功则传回 1，失败则传回 0。例如传输中途客户的浏览器突然挂了，则会造成输出失败的情形。

参考


函式:printf()

字串处理函式库

printf

输出格式化字串。

语法: int printf(string format, mixed [args]...);

传回值: 整数

函式种类: 资料处理

内容说明

本函式依参数 format 指定的内容格式将字串格式化。格式的细节可以参考 sprintf()。

参考


函式:putenv()

PHP 选项及相关资讯函式库

putenv

设定系统环境变数。

语法: void putenv(string setting);

传回值: 无

函式种类: PHP 系统功能

内容说明

本函式用来设定系统环境变数。

使用范例

设定 Oracle 资料库需使用的环境变数 NLS_LANG，传回资料含中文 BIG5 码。

<?
putenv("NLS_LANG=american_taiwan.zht16big5");
?>


函式:quoted_printable_decode()

字串处理函式库

quoted_printable_decode

将 qp 编码字串转成 8 位元字串。

语法: string quoted_printable_decode(string str);

传回值: 字串

函式种类: 编码处理

内容说明

本函式可以将 quoted-printable 后的字串解码成为 8 位元编码的字串。而本函式类似 imap_qprint() 函式，唯一不同的地方是使用 imap_qprint() 函式需要让系统加入 IMAP 的模组，而本函式不需要 IMAP 模组。


函式:QuoteMeta()

字串处理函式库

QuoteMeta

加入引用符号。

语法: string quotemeta(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字串中含有 . \\ + * ? [ ^ ] ( $ ) 等字元的前面加入反斜线 "\" 符号。

参考


函式:rand()

数学运算函式库

rand

取得乱数值。

语法: int rand([int min], [int max]);

传回值: 整数

函式种类: 数学运算

内容说明

本函式用来取得乱数值。若没有指定乱数的最大及最小范围，本函式会自动的从 0 到 RAND_MAX 中取一个乱数。若有指定 min 及 max 的参数，则从指定参数中取一个数字。例如 rand(38, 49) 则会从 38 到 49 之间取一个乱数值，UNIX 系统包含 49、Win32 系统不包含 49 (zkimmel@earthlink.net 10-May-1999)。值得注意的是为使乱数的乱度最大，每次在取乱数之前最好使用 srand() 以设定新的乱数种子。

参考


函式:range()

阵列处理函式库

range

建立一个整数范围的阵列。

语法: array range(int low, int high);

传回值: 阵列

函式种类: 资料处理

内容说明

此函式建立一个由小到大的连续整数阵列。在 shuffle() 函式有使用范例。

参考

shuffle()


函式:rawurldecode()

字串处理函式库

rawurldecode

从 URL 专用格式字串还原成普通字串。

语法: string rawurldecode(string str);

传回值: 字串

函式种类: 编码处理

内容说明

本函式将字串解码。从 URL 的字串专用格式解成普通字串。详细的编码解码资讯及规格文件可以参考 RFC 1738。

参考

rawurlencode()


函式:rawurlencode()

字串处理函式库

rawurlencode

将字串编码成 URL 专用格式。

语法: string rawurldecode(string str);

传回值: 字串

函式种类: 编码处理

内容说明

本函式将字串编码成 URL 的字串专用格式，特殊的字元会转换成百分比符号后面加上二个十六位元数字的格式。例如，空格就会变成 %20。

使用范例

<?php
echo '<a href="ftp://guest:', rawurlencode ('foo @+%/'), '@localhost/x.txt">';
?>

参考

rawurldecode()


函式:readdir()

目录管理函式库

readdir

读取目录 handle。

语法: string readdir(int dir_handle);

传回值: 字串

函式种类: 档案存取

内容说明

本函式用来读取目录。传回目录中的档案名称，读取不照任何特殊的顺序。

使用范例

本例列出目前目录的所有档案

<?php
$handle=opendir('.');
echo "目录 handle: $handle\n";
echo "档案:\n";
while ($file = readdir($handle)) {
echo "$file\n";
}
closedir($handle);
?>


函式:readfile()

档案系统函式库

readfile

输出档案。

语法: int readfile(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式读取档案，并将档案内容写入标准输出设备中。传回值是读取的档案大小。若有错误传回 false 值，可以在函式前面加入 @，变成 @readfile，就可以隐藏起来。和 fopen() 用法一样，若参数 filename 为 "http://......" 则本函数利用 HTTP 1.0 协定与伺服器连线，档案指标则指到伺服器传回文件的起始处。若参数 filename 为 "ftp://......." 则本函数会与伺服器连线，档案指标指到指定的档案处。若 FTP 伺服器没有支援被动模式 (passive mode ftp) 则传回失败值。开启的 FTP 档案可以是读取或写入其中之一，但不能读或写二种同时使用。其它的情形，本函式开启本地的档案，档案的指标则指向开启的档案。若开档失败，则传回 false 值。

参考


函式:readgzfile()

压缩档案函式库

readgzfile

读出压缩档。

语法: boolean readgzfile(string filename);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式将压缩档全部读出并解压缩，之后将内容送到标准输出设备上 (stdout)。参数 filename 为档案名称。本函式其实也可以读取非压缩档至标准输出设备中。


函式:readlink()

档案系统函式库

readlink

传回符号连结 (symbolic link) 目标档。

语法: string readlink(string path);

传回值: 字串

函式种类: 档案存取

内容说明

本函式和 C 语言的同名函式用法相同，传回符号连结的档案。若发生错误则传回 0。

参考


函式:recode_file()

GNU 记录函式库

recode_file

记录档案或档案请求到记录中。

语法: boolean recode_file(int input, int output);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式依请求将档案记录到记录之中。成功则传回 true 值。


函式:recode_string()

GNU 记录函式库

recode_string

记录字串到记录中。

语法: boolean recode_string(string request, string string);

传回值: 布林值

函式种类: 特殊档案格式

内容说明

本函式依请求记录字串到记录中。成功则传回 true 值。


函式:register_shutdown_function()

杂项函式库

register_shutdown_function

定义 PHP 程式执行完成后执行的函式。

语法: int register_shutdown_function(string func);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式向系统定义 PHP 程式 (Script) 执行结束之后所要执行的函式。当执行该指定的函式时，由于无法看到传回值，因此除错较困难。


函式:rename()

档案系统函式库

rename

更改档名。

语法: int rename(string oldname, string newname);

传回值: 整数

函式种类: 档案存取

内容说明

本函式可将旧档名 oldname 改成新档名 newname。成功则传回 true、失败则传回 false。


函式:reset()

阵列处理函式库

reset

将阵列的指标指到阵列第一个元素。

语法: mixed reset(array array);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

本函式将阵列的指标重设，将指标改指到阵列的第一个元素。传回值的内容也是阵列的第一个元素。

使用范例

技巧:
kk@shonline.de 指出 (30-Jul-1998)，当阵列的资料不够稳定时，使用 reset() 会有警告讯息。最常发生的时候是处理 HTML 表单(form)的输入资料时，若使用者输入的资料不够充份，或使用者故意增删输入 (input) 栏位，就有可能会有警告讯息。用 @reset() 的方式可使警告讯息不出现 (在 reset() 前加 @)，不过这只是掩耳盗铃的方式；要斧底抽薪的方法是使用 if (isset()) 的方式 (参见 4.48.14 isset() 函式)，如下例

<?
if (isset($form_array)) {
reset($form_array);
while (list($k, $v) = each($form_array)) {
do_something($k, $v);
}
}
?>

参考


函式:rewind()

档案系统函式库

rewind

重置开档的读写位置指标。

语法: int rewind(int fp);

传回值: 整数

函式种类: 档案存取

内容说明

本函式重置档案的读写位置指标到标案的开头处。发生错误则传回 0。档案 fp 必须是有效且用 fopen() 开启的档案。

使用范例

fseek ftell


函式:rewinddir()

目录管理函式库

rewinddir

重设目录 handle。

语法: void rewinddir(int dir_handle);

传回值: 无

函式种类: 档案存取

内容说明

本函式用来重设目录资料流到开始处。


函式:rmdir()

档案系统函式库

rmdir

删除目录。

语法: int rmdir(string dirname);

传回值: 整数

函式种类: 档案存取

内容说明

本函式可用来删除目录。欲删除的路径必须是空的目录，且权限必须要合乎要求。发生错误则传回 0。

参考

mkdir()


函式:round()

数学运算函式库

round

四舍五入。

语法: double round(double val);

传回值: 倍精确数

函式种类: 数学运算

内容说明

本函式用来将数字小数点后四舍五入。

使用范例

<?php
$foo1 = round(3.4);
$foo2 = round(3.5);
$foo3 = round(3.6);
echo "round(3.4): ".$foo1."<br>\n";
echo "round(3.5): ".$foo2."<br>\n";
echo "round(3.6): ".$foo3;
?>

参考


函式:rsort()

阵列处理函式库

rsort

将阵列的值由大到小排序。

语法: void rsort(array array);

传回值: 无

函式种类: 资料处理

内容说明

本函式将阵列依由大到小的方式重排。

使用范例

<?
$fruits = array("lemon","orange","banana","apple");
rsort($fruits);
for(reset($fruits); list($key,$value) = each($fruits); ) {
echo "fruits[$key] = ".$value."\n";
}
?>
处理后的结果为
fruits[0] = orange
fruits[1] = lemon
fruits[2] = banana
fruits[3] = apple

参考


函式:sem_acquire()

信号与共享记忆体函式库

sem_acquire

捕获信号。

语法: int sem_acquire(int sem_identifier);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式用来捕获系统信号 (semaphore)。若捕捉信号的数量超过限度 (max_acquire)，则行程在捕捉时会先封锁 (block) 住信号。

参考


函式:sem_get()

信号与共享记忆体函式库

sem_get

取得信号代码。

语法: int sem_get(int key, int [max_acquire] , int [perm]);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式用来取得 System V 系统信号 (semaphore) 的代码值。参数 key 为存取信号的键值。参数 max_acquire 可省略，内定值为 1，表示同时可取得的处理数目。参数 perm 可省略，表示该记忆体区段的控制权限，内定值为 0666。

参考


函式:sem_release()

信号与共享记忆体函式库

sem_release

释出信号。

语法: int sem_release(int sem_identifier);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式用来释出呼叫行程捕获的系统信号 (semaphore)。成功则传回 true 值。

参考


函式:serialize()

杂项函式库

serialize

储存资料到系统中。

语法: string serialize(mixed value);

传回值: 字串

函式种类: 资料处理

内容说明

本函式可储存资料到系统中。储存的资料以 byte-stream 方式存放。变数 value 为混合型态，包括整数、倍精确浮点数字串、阵列以及物件的属性 (物件的方法无法储存)。

参考

unserialize()


函式:session_decode()

Session 函式库

session_decode

Session 资料解码。

语法: boolean session_decode(string data);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式可将 Session 资料解码。参数 data 即为欲解码的资料。成功则传回 true 值。


函式:session_destroy()

Session 函式库

session_destroy

结束 session。

语法: boolean session_destroy(void);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式结束目前的 Session。本函式没有参数，且传回值均为 true。


函式:session_encode()

Session 函式库

session_encode

Session 资料编码。

语法: boolean session_encode(void);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式可将 Session 资料编码，编码以 ZEND 引擎做杂凑编码。本函式没有参数。成功则传回 true 值。

[ 上一页 ]


函式:session_id()

Session 函式库

session_id

存取目前 session 代号。

语法: string session_id(string [id]);

传回值: 字串

函式种类: 资料处理

内容说明

本函式可取得或者重新设定目前存放 Session 的代号。若无参数 id 则表示只有取得目前 Session 的代号，加上参数则表示将 Session 代号设成新指定的 id。输入及传回均为字串。


函式:session_is_registered()

Session 函式库

session_is_registered

检查变数是否注册。

语法: boolean session_is_registered(string name);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式可检查目前的 Session 之中是否已有指定的变数注册。参数 name 即为欲检查的变数名。成功则传回 true 值。


函式:session_module_name()

Session 函式库

session_module_name

存取目前 session 模组。

语法: string session_module_name(string [module]);

传回值: 字串

函式种类: 资料处理

内容说明

本函式可取得或者重新设定目前 Session 的模组。若无参数 module 则表示只获取目前 Session 的模组，加上参数则表示将 Session 模组设为参数 module。


函式:session_name()

Session 函式库

session_name

存取目前 session 名称。

语法: string session_name(string [name]);

传回值: 字串

函式种类: 资料处理

内容说明

本函式可取得或者重新设定目前 Session 的名称。若无参数 name 则表示单单获取目前 Session 名称，加上参数则表示将 Session 名称设为参数 name。

使用范例

下面的范例为 Session 片段程式

<?php
$username="guest1";
if(isset($username)) {
session_name($username);
}
echo "您是 ".session_name()."\n";
?>


函式:session_register()

Session 函式库

session_register

注册新的变数。

语法: boolean session_register(string name);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式在全域变数中增加一个变数到目前的 Session 之中。参数 name 即为欲加入的变数名。成功则传回 true 值。


函式:session_save_path()

Session 函式库

session_save_path

存取目前 session 路径。

语法: string session_save_path(string [path]);

传回值: 字串

函式种类: 资料处理

内容说明

本函式可取得或者重新设定目前存放 Session 的路径。若无参数 path 则表示只有取得目前 Session 的路径目录名，加上参数 path 则表示将 Session 存在新的 path 上。


函式:session_start()

Session 函式库

session_start

初始 session。

语法: boolean session_start(void);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式初始化一个新的 Session，若该客户已在 Session 之中，则连上原 Session。本函式没有参数，且传回值均为 true。


函式:session_unregister()

Session 函式库

session_unregister

删除已注册变数。

语法: boolean session_unregister(string name);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式在目前的 Session 之中删除全域变数上的变数。参数 name 即为欲删除的变数名。成功则传回 true 值。


函式:set_file_buffer()

档案系统函式库

set_file_buffer

设定档案缓冲区大小。

语法: int set_file_buffer(int fp, int buffer);

传回值: 整数

函式种类: 档案存取

内容说明

本函式设定档案的缓冲区大小供写入档案使用。若 buffer 值设为 0，则在写入操作时无缓冲区。成功则传回 0 值。值得注意的是当档案开启 (fopen) 时，会使用本函式将内定的缓冲区设为 8k。

参考

fopen()


函式:set_magic_quotes_runtime()

PHP 选项及相关资讯函式库

set_magic_quotes_runtime

设定 magic_quotes_runtime 值。

语法: long set_magic_quotes_runtime(int new_setting);

传回值: 长整数

函式种类: PHP 系统功能

内容说明

本函式用来设定 magic_quotes_runtime 值。

参考


函式:set_socket_blocking()

网路函式库

set_socket_blocking

切换搁置与无搁置模式。

语法: int set_socket_blocking(int socket descriptor, int mode);

传回值: 整数

函式种类: 网路系统

内容说明

若参数 mode 值为 false，会将 socket 切换到无搁置模式 (non-blocking mode)；若 mode 值为 true，则切换成搁置模式。当使用 fgets() 等函式读取 socket 时，无法确定传回时间，用无搁置模式可使行程继续，不会因无法读到资料而搁置。


函式:set_time_limit()

PHP 选项及相关资讯函式库

set_time_limit

设定该页最久执行时间。

语法: void set_time_limit(int seconds);

传回值: 无

函式种类: PHP 系统功能

内容说明

本函式用来设定该页最久执行时间。内定值是 30 秒，在 php.ini 中的 max_execution_time 变数设定，若设定为 0 则不限定最久时间。当执行到该函数时，才开始计算。例如，若内定是 30 秒，而在执行到该函数前已执行了 25 秒，而用本函式改为 20 秒，则该页面最长执行时间为 45 秒。

[ 上一页 ]


函式:setcookie()

HTTP 相关函式库

setcookie

送出 Cookie 资讯到浏览器。

语法: int setcookie(string name, string value, int expire, string path, string domain, int secure);

传回值: 整数

函式种类: 网路系统

内容说明

本函式会跟着标头 Header 送出一段小资讯字串到浏览器。使用本函式要在送出 HTML 资料前，实际上 cookie 也算标头的一部份。本函式的参数除了第一个 name 之外，都是可以省略的。参数 name 表示 cookie 的名称；value 表示这个 cookie 的值，这个参数为空字串则表示取消浏览器中该 cookie 的资料；expire 表示该 cookie 的有效时间；path 为该 cookie 的相关路径；domain 表示 cookie 的网站；secure 则需在 https 的安全传输时才有效。想得到更多的 cookie 资讯可以到 http://www.netscape.com/newsref/std/cookie_spec.html，由 cookie 原创者 Netscape 所提供的完整资讯。

使用范例

dante@mpath.com (27-May-1999) 所提供的 setcookie() 及 header() 范例。

<?php
$status = 0;
if (isset($myTstCky) && ($myTstCky == "ChocChip")) $status = 1;
if (!isset($CCHK)) {
setcookie("myTstCky", "ChocChip");
header("Location: $PHP_SELF?CCHK=1");
exit;
}
?>
<html>
<head><title>Cookie Check</title></head>
<body bgcolor="#FFFFFF" text="#000000">
Cookie Check Status:
<?php
printf ('<font color="#%s">%s</font><br>;',
$status ? "00FF00" : "FF0000",
$status ? "PASSED!" : "FAILED!");
?>
</body>
</html>


函式:setlocale()

字串处理函式库

setlocale

设定地域化资讯。

语法: string setlocale(string category, string locale);

传回值: 字串

函式种类: 作业系统与环境

内容说明

本函式用来设定地域的资讯。参数 category 有下列的选择：

  • LC_ALL 包括下面的全项选项都要。
  • LC_COLLATE 设定字串比较，PHP 目前尚未实作出来本项。
  • LC_CTYPE 设定字元类别及转换。例如全变大写 strtoupper()。
  • LC_MONETARY 设定金融货币，PHP 目前尚未实作。
  • LC_NUMERIC 设定小数点后的位数。
  • LC_TIME 设定时间日期格式，与 strftime() 合用。

而参数 locate 若是空字串 ""，则会使用系统环境变数的 locate 或是 LANG 的值。若 locate 为零，则不会改变地域化设定。传回新的地域，若系统尚未实作则传回 false。

使用范例

Michal Fita <manveru@witrynka.pl> 于 11-Jan-1999 11:01 提出这个以波兰作地域化的例子。

<?
setlocale("LC_ALL", "pl");
$net = "1234,56";
$gross = "1,22" * $net;
printf("毛利: %s, 净利: %s", $gross, $net");
/* 波兰总?/font>[值税为 22% */
?>

传回值则为
毛利: 1234,56, 净利: 1506,1632


函式:settype()

变数处理函式库

settype

设定变数型态。

语法: int settype(string var, string type);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式用来设定或转换变数型态。成功传回 true 值，其它情形传回 false 值。参数 var 为原来的变数名，参数 type 为下列的型态之一：integer、double、string、array 与 object。

参考

gettype()


函式:shm_attach()

信号与共享记忆体函式库

shm_attach

开启建立共享记忆体区段。

语法: int shm_attach(int key, int [memsize], int [perm]);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式用来开启或者建立共享记忆体区段。参数 key 为这区段的键。参数 memsize 可省略，表示所需最小的记忆体区段 (单位为 byte 位元组)，内定值在 php3.ini 或 php.ini 中的 sysvshm.init_mem 设定，若无设定则为 10000 bytes。参数 perm 亦可省略，为该记忆体区段的使用权限，内定值为 666。传回值为共享记忆体的ID 值，可供程式使用。


函式:shm_detach()

信号与共享记忆体函式库

shm_detach

中止共享记忆体区段连结。

语法: int shm_detach(int shm_identifier);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式用来中止与共享记忆体区段的连结。参数 shm_identifier 即为欲停止区段的共享记忆体 ID 值。


函式:shm_get_var()

信号与共享记忆体函式库

shm_get_var

取得记忆体区段中指定的变数。

语法: mixed shm_get_var(int shm_identifier, int variable_key);

传回值: 混合型态资料

函式种类: 作业系统与环境

内容说明

本函式可用来取得记忆体区段中指定的变数值。参数 shm_identifier 为欲取得的共享记忆体 ID 值。参数 variable_key 为欲取得的变数名称键。传回值即为指定变数键的值。


函式:shm_put_var()

信号与共享记忆体函式库

shm_put_var

加入或更新记忆体区段中的变数。

语法: int shm_put_var(int shm_identifier, int variable_key, mixed variable);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式可用来增加或者修改记忆体区段中变数值。参数 shm_identifier 为欲增加修改的共享记忆体 ID 值。参数 variable_key 为欲增加修改的变数名称键。参数 variable 为变数的内容，变数的型态可以是倍精确数 (double)、整数 (integer)、字串 (string) 或者是阵列 (array)。


函式:shm_remove()

信号与共享记忆体函式库

shm_remove

清除记忆体区段。

语法: int shm_remove(int shm_identifier);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式用来清除共享记忆体区段的所有资料。参数 shm_identifier 即为欲停止区段的共享记忆体 ID 值。


函式:shm_remove_var()

信号与共享记忆体函式库

shm_remove_var

删除记忆体区段中指定的变数。

语法: int shm_remove_var(int id, int variable_key);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式可用来删除记忆体区段中指定的变数值。参数 shm_identifier 为欲除去的共享记忆体 ID 值。参数 variable_key 为欲删除的变数名称键。


函式:shuffle()

阵列处理函式库

shuffle

将阵列的顺序弄混。

语法: void shuffle(array array);

传回值: 无

函式种类: 资料处理

内容说明

本函式将阵列以随机的方式使全部元素重新乱排。

使用范例

<?
$numbers = range(1,20);
srand(time());
shuffle($numbers);
while (list(,$number) = each($numbers)) {
echo "$number ";
}
?>

注意:
ccunning@math.ohio-state.edu 指出 (31-May-1999)，在 Solaris 上由于受了 libc 函式馆的影响，会使本函式出现问题。目前解决的方式如下面的例子。(注: 或许之后新的 PHP 版本会修正这个问题。)
<?
function myshuffle($array) {
mt_srand((double) microtime()*1000000);
$num = count($array);
for ($i=0; $i<$num-1; $i++) {
$n = mt_rand($i+1,$num);
$temp = $array[$n];
$array[$n] = $array[$i];
$array[$i] = $temp;
}
}
$array = array(1,2,3,4,5,6,7,8,9,10);
myshuffle(&$array);
while (list(,$var)=each($array)) {
echo $var . " ";
}
?>

参考


函式:similar_text()

字串处理函式库

similar_text

计算字串相似度。

语法: int similar_text(string first, string second, double [percent]);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来计算比较二字串的相似程度。


函式:Sin()

数学运算函式库

Sin

正弦计算。

语法: float sin(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式计算参数 arg 的正弦值 (sine)。

参考


函式:sizeof()

阵列处理函式库

sizeof

获知阵列的大小。

语法: int sizeof(array array);

传回值: 整数

函式种类: 资料处理

内容说明

本函式以整数型态传回阵列的元素个数。

参考

count()


函式:sleep()

杂项函式库

sleep

暂停执行。

语法: void sleep(int seconds);

传回值: 无

函式种类: PHP 系统功能

内容说明

本函式可暂时使程式停止执行。参数 seconds 为要暂停的秒数。

参考

usleep()


函式:snmp_get_quick_print()

SNMP 网管函式库

snmp_get_quick_print

取得 UCD 函式库中的 quick_print 值。

语法: boolean snmp_get_quick_print(void);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式可用来取得 UCD SNMP 函式库中的 quick_print 值，在 Windows NT 系统上本函式无法作用。本函式不需要输入参数，传回 0 表示 quick_print 关闭，1 表示开启。


函式:snmp_set_quick_print()

SNMP 网管函式库

snmp_set_quick_print

设定 UCD 函式库中的 quick_print 值。

语法: void snmp_set_quick_print(boolean quick_print);

传回值: 无

函式种类: 网路系统

内容说明

本函式设定 UCD SNMP 函式库中的 quick_print 值，在 Windows NT 系统上本函式无法作用。参数 quick_print 值为 0 表示 quick_print 关闭，1 表示开启。本函式无传回值。

使用范例

<?php
snmp_set_quick_print(0);
$a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
echo $a."\n";
snmp_set_quick_print(1);
$a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
echo $a."\n";
?>

传回值为
Timeticks: (0) 0:00:00.00
0:00:00.00


函式:snmpget()

SNMP 网管函式库

snmpget

取得指定物件识别码。

语法: int snmpget(string hostname, string community, string object_id);

传回值: 整数

函式种类: 网路系统

内容说明

本函式可用来取得指定的物件识别代码 (OID, Object Identifier)。参数 hostname 为指定的机器。参数 community 为社群名称，有 public 或 private 等。参数 object_id 即为 OID 物件，为 MIB 所定义的物件。传回值为 OID 值，若失败则传回 false。

使用范例

下面为部份范例

<?php
snmpget("127.0.0.1", "public", "system.SysContact.0");
?>


函式:snmpwalk()

SNMP 网管函式库

snmpwalk

取得所有物件。

语法: array snmpwalk(string hostname, string community, string object_id, int [timeout], int [retries]);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式可用来取得所有物件识别代码 (OID, Object Identifier)，取得物件为从根物件 (root) 开始的全部 MIB 物件。参数 hostname 为指定的机器。参数 community 为社群名称，有 public 或 private 等。参数 object_id 即为 OID 物件，为 MIB 所定义的物件，只要输入空字串即可。传回值为 OID 阵列，若失败则传回 false。

使用范例

下面为部份范例

<?php
$a = snmpwalk("127.0.0.1", "public", "");
for ($i=0; $i<count($a); $i++) {
echo $a[$i]."<br>\n";
}
?>


函式:snmpwalkoid()

SNMP 网管函式库

snmpwalkoid

取得网路本体树状资讯。

语法: array snmpwalkoid(string hostname, string community, string object_id, int [timeout], int [retries]);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式可用来取得所有物件识别代码 (OID, Object Identifier)，取得物件为从根物件 (root) 开始的全部 MIB 物件及其值。参数 hostname 为指定的机器。参数 community 为社群名称，有 public 或 private 等。参数 object_id 即为 OID 物件，为 MIB 所定义的物件，只要输入空字串即可。传回值为阵列，若失败则传回 false。

使用范例

下面为部份范例

<?php
$a = snmpwalkoid("127.0.0.1", "public", "");
for (reset($a); $i = key($a); next($a)) {
echo $i.": ".$a[$i]."<br>\n";
}
?>


函式:solid_close()

Solid 资料库连结函式库

solid_close

关闭 solid 连结。

语法: void solid_close(int connection_id);

传回值: 无

函式种类: 资料库功能

内容说明

本函式用来关闭与 solid 资料库之间的连结。参数 connection_id 为 solid 连结代号 ID 值。若正在执行 transactions 则无法关闭连结。


函式:solid_connect()

Solid 资料库连结函式库

solid_connect

连结至 solid 资料库。

语法: int solid_connect(string dsn, string user, string password, int [cursor_type]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来连结到 solid 资料库，传回值为连结的代号 ID 值。参数 dsn 为资料来源名称 (Data Sources Name)。参数 user 及 password 分别为连结的帐号及密码。参数 cursor_type 通常省略，其值有 SQL_CUR_USE_IF_NEEDED、SQL_CUR_USE_ODBC、SQL_CUR_USE_DRIVER 及 SQL_CUR_DEFAULT 等四种。当使用复杂的资料存取时可能会有类似 "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it" 的错误讯息字串，此时若将参数 cursor_type 的值设为 SQL_CUR_USE_ODBC 就可以避开了。


函式:solid_exec()

Solid 资料库连结函式库

solid_exec

执行 SQL 指令。

语法: int solid_exec(int connection_id, string query);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来执行 SQL 的 query 指令。参数 connection_id 为 ODBC 连结代号 ID 值。参数 query 则为欲执行的指令。传回值为 Result ID 值。


函式:solid_fetchrow()

Solid 资料库连结函式库

solid_fetchrow

取得传回一列。

语法: int solid_fetchrow(int result_id, int [row_number]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的一列。参数 result_id 为 ODBC 传回 ID 值。参数 rownumber 可省略，为指定的取得列 (row)。


函式:solid_fieldname()

Solid 资料库连结函式库

solid_fieldname

取得栏位名称。

语法: string solid_fieldname(int result_id, int field_number);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得 Query 的传回资料的栏位名称。参数 result_id 为 solid 传回 ID 值。参数 field_number 为指定的栏位，起始值为 1。


函式:solid_fieldnum()

Solid 资料库连结函式库

solid_fieldnum

取得栏位数目。

语法: int solid_fieldnum(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得传回资料的栏位数目。参数 result_id 为 solid 传回 ID 值。若发生错误则传回 -1。


函式:solid_freeresult()

Solid 资料库连结函式库

solid_freeresult

释出传回资料的记忆体。

语法: int solid_freeresult(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可用来释出传回资料所使用的记忆体，通常在系统记忆体资源不足的情形下才需要使用。参数 result_id 为 solid 传回 ID 值。传回值永远都是 true。


函式:solid_numfields()

Solid 资料库连结函式库

solid_numfields

取得栏位数目。

语法: int solid_numfields(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得传回资料的栏位数目。参数 result_id 为 solid 传回 ID 值。若发生错误则传回 -1。


函式:solid_numrows()

Solid 资料库连结函式库

solid_numrows

取得传回列数目。

语法: int solid_numrows(int result_id);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得传回列的数目。参数 result_id 为 solid 传回 ID 值。若有错误发生则传回 -1。


函式:solid_result()

Solid 资料库连结函式库

solid_result

取得传回资料。

语法: string solid_result(int result_id, mixed field);

传回值: 字串

函式种类: 资料库功能

内容说明

本函式用来取得传回的资料。参数 result_id 为 solid 传回 ID 值。参数 field 可以是数字形态，代表指定的栏位序号 (从 1 开始)；亦可以是字串形态，为指定的栏位名称。


函式:sort()

阵列处理函式库

sort

将阵列排序。

语法: void sort(array array);

传回值: 无

函式种类: 资料处理

内容说明

本函式将阵列依由小到大的方式重排。

使用范例

<?
$fruits = array("lemon","orange","banana","apple");
sort($fruits);
for(reset($fruits); list($key,$value) = each($fruits); ) {
echo "fruits[$key] = ".$value."\n";
}
?>

传回的结果为
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange

参考


函式:soundex()

字串处理函式库

soundex

计算字串的读音值

语法: string soundex(string str);

传回值: 字串

函式种类: 资料处理

内容说明

Soundex 值是利用英文字的读音近似值所求得的值，值由四个字元构成，第一个字元为英文字母，后三个为数字。在拼音文字中有时会有会念但不能拼出正确字的情形，特别是在做搜寻引擎时面对使用者传入的英文字串，可用本函式做类似模糊比对的效果。例如 Knuth 和 Kant 二个字串，它们的 soundex 值都是 H416。更详细的说明参考 Donald Knuth 大师的名著：电脑程式设计的艺术 (The Art Of Computer Programming) 第三卷排序和搜寻。

使用范例

<?
$str1=soundex("Wilson");
$str2=soundex("Waillsume");
echo "soundex(\"Wilson\")=$str1 等于\n";
echo "soundex(\"Waillsume\")=$str2\n";
echo "值均为 $str1";
?>

上例传回的字串为
soundex("Wilson")=W425 等于
soundex("Waillsume")=W425
值均为 W425


函式:split()

常规表示法函式库

split

将字串依指定的规则切开。

语法: array split(string pattern, string string, int [limit]);

传回值: 阵列

函式种类: 资料处理

内容说明

本函式可将字串依指定的规则分开。切开后的传回值为阵列变数。参数 pattern 为指定的规则字串、参数 string 则为待处理的字串、参数 limit 可省略，表示欲处理的最多合乎值。值得注意的是本函式的 pattern 参数有区分大小写。

参考


函式:sprintf()

字串处理函式库

sprintf

将字串格式化。

语法: string sprintf(string format, mixed [args]...);

传回值: 字串

函式种类: 资料处理

内容说明

本函式用来将字串格式化。参数 format 是转换的格式，以百分比符号 % 开始到转换字符为止。而在转换的格式间依序包括了

  1. 填空字元。0 的话表示空格填 0；空格是内定值，表示空格就放着。
  2. 对齐方式。内定值为向右对齐，负号表向左对齐。
  3. 栏位宽度。为最小宽度。
  4. 精确度。指在小数点后的浮点数位数。
  5. 型态，见下表
    % 印出百分比符号，不转换。
    b | 整数转成二进位。
    c | 整数转成对应的 ASCII 字元。
    d | 整数转成十进位。
    f | 倍精确度数字转成浮点数。
    o | 整数转成八进位。
    s | 整数转成字串。
    x | 整数转成小写十六进位。
    X | 整数转成大写十六进位。

使用范例

<?
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// 此时变数 $money 值为 "123.1";
$formatted = sprintf ("%01.2f", $money);
// 此时变数 $ formatted 值为 "123.10"
?>


函式:sql_regcase()

常规表示法函式库

sql_regcase

将字串逐字传回大小写字元。

语法: string sql_regcase(string string);

传回值: 阵列

函式种类: 资料处理

内容说明

本函式可将字串之字元逐字传回大小写。在 PHP 使用上，本函式没有什么作用，但可能可以提供外部程式或资料库处理。

使用范例

例中的传回字串为 [Ww][Ii][Ll][Ss][Oo][Nn]

<?php
print(sql_regcase("wilson"));
?>

[ 上一页 ]


函式:Sqrt()

数学运算函式库

Sqrt

开平方根。

语法: float sqrt(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式将参数 arg 开平方根。


函式:srand()

数学运算函式库

srand

设定乱数种子。

语法: void srand(int seed);

传回值: 无

函式种类: 数学运算

内容说明

本函式传入参数 seed 后，设定乱数的种子。值得注意的是参数 seed 值最好也是随机出现的数字，例如利用加入时间做为变数的来源就是不错的方法，或者开发其它的硬体周边介面可取得更好的乱数。

使用范例

本例加入时间的因素，以执行时的百万分之一秒当乱数种子

<?php
srand((double)microtime()*1000000);
$randval = rand();
echo $randval;
?>

参考


函式:stat()

档案系统函式库

stat

取得档案相关资讯。

语法: array stat(string filename);

传回值: 阵列

函式种类: 档案存取

内容说明

本函式可蒐集档案的相关资讯，并传回阵列。阵列的元素依序如下：

  1. 装置名称 (device)
  2. inode 值
  3. inode 档案模式
  4. 参照到该档的名称总数，含 link 档。
  5. 拥有者的 UID
  6. 拥有者的 GID
  7. 若为字元或装置设备则为装置型态 (限系统支援 st_blksize 方有效，Windows 系列传回 -1)
  8. 位元组为单位的档案长度
  9. 最后存取时间
  10. 最后修改时间
  11. 最后更动时间
  12. 档案系统的区块大小 (限系统支援 st_blksize 方有效，Windows 系列传回 -1)
  13. 匹配的区块数
传回值放在快取缓冲区中，参考 clearstatcache()。


函式:str_replace()

字串处理函式库

str_replace

字串取代。

语法: string str_replace(string needle, string str, string haystack);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字串 str 代入 haystack 字串中，将所有的 needle 置换成 str。mlevine@adtraq.com (11-Apr-1999) 指出在 PHP 3.0.7 版，本函式有些 bug，而 nadeem@bleh.org (05-Jun-1999) 补充在 PHP 3.0.8 版本函式就回复正常了。

使用范例

下例将 %body% 以 black 取代

<?php
$bodytag = str_replace("%body%", "black", "<body text=%body%>");
echo $bodytag;
?>

参考

ereg_replace()


函式:strchr()

字串处理函式库

strchr

寻找第一个出现的字元。

语法: string strchr(string haystack, string needle);

传回值: 字串

函式种类: 资料处理

内容说明

本函式也就是 strstr() 函式。


函式:strcmp()

字串处理函式库

strcmp

字串比较。

语法: int strcmp(string str1, string str2);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来比较二字串的大小。传回负数表示 str1 小于 str2；传回正数表示 str1 大于 str2；传回零表示二字串相同。

参考


函式:strcspn()

字串处理函式库

strcspn

不同字串的长度。

语法: int strcspn(string str1, string str2);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来比较二字串并计算出不同处的字串长度。

参考

strspn()


函式:strftime()

日期与时间函式库

strftime

将伺服器的时间本地格式化。

语法: string strftime(string format, int [timestamp]);

传回值: 字串

函式种类: 时间日期

内容说明

传回值的字串依设定的格式来决定。若有传入时间戳记值，则将时间戳记格式化传回；若无传入时间戳记值，则将目前伺服器的时间本地格式化传回。月份或者星期名称随着本地语系设定 setlocale() 的不同而改变。

传回的字串可以依下列的格式而定：

  • %a 星期几的缩写。
  • %A 星期几的全名。
  • %b 月份名称的缩写。
  • %B 月份名称的全名。
  • %c 本地端日期时间较佳表示字串。
  • %d 用数字表示本月的第几天 (范围为 00 至 31)。
  • %H 用 24 小时制数字表示小时数 (范围为 00 至 23)。
  • %I 用 12 小时制数字表示小时数 (范围为 01 至 12)。
  • %j 以数字表示当年度的第几天 (范围为 001 至 366)。
  • %m 月份的数字 (范围由 1 至 12)。
  • %M 分钟。
  • %p 以 'AM' 或 'PM' 表示本地端时间。
  • %S 秒数。
  • %U 数字表示为本年度的第几周，第一个星期由第一个周日开始。
  • %W 数字表示为本年度的第几周，第一个星期由第一个周一开始。
  • %w 用数字表示本周的第几天 ( 0 为周日)。
  • %x 不含时间的日期表示法。
  • %X 不含日期的时间表示法。
  • %y 二位数字表示年份 (范围由 00 至 99)。
  • %Y 完整的年份数字表示，即四位数。
  • %Z 时区或名称缩写。
  • %% % 字元。

使用范例

<?php
setlocale ("LC_TIME", "C");
print(strftime("%A in Finnish is "));
setlocale ("LC_TIME", "fi");
print(strftime("%A, in French "));
setlocale ("LC_TIME", "fr");
print(strftime("%A and in German "));
setlocale ("LC_TIME", "de");
print(strftime("%A.\n"));
?>

参考


函式:strip_tags()

字串处理函式库

strip_tags

去掉 HTML 及 PHP 的标记。

语法: string strip_tags(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式可去掉字串中包含的任何 HTML 及 PHP 的标记字串。若是字串的 HTML 及 PHP 标签原来就有错，例如少了大于的符号，则也会传回错误。而本函式和 fgetss() 有着相同的功能。


函式:StripSlashes()

字串处理函式库

StripSlashes

去掉反斜线字元。

语法: string stripslashes(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式可去掉字串中的反斜线字元。若是连续二个反斜线，则去掉一个，留下一个。若只有一个反斜线，就直接去掉。

参考

addslashes()


函式:strlen()

字串处理函式库

strlen

取得字串长度。

语法: int strlen(string str);

传回值: 整数

函式种类: 资料处理

内容说明

本函式传回指定的字串长度。


函式:strpos()

字串处理函式库

strpos

寻找字串中某字元最先出现处。

语法: int strpos(string haystack, string needle, int [offset]);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来寻找字串 haystack 中的字元 needle 最先出现的位置。值得注意的是 needle 只能是一个字元，中文字等就不适合了。若找不到指定的字元，则传回 false 值。参数 offset 可省略，用来Y表示从 offset 开始找。

参考


函式:strrchr()

字串处理函式库

strrchr

取得某字元最后出现处起的字串。

语法: string strrchr(string haystack, string needle);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来寻找字串 haystack 中的字元 needle 最后出现位置，并将此位置起至字串 haystack 结束之间的字串传回。若没有找到 needle 则传回 false。

使用范例

下例取回环境变数 PATH 之最后一个路径

<?php
$dir = substr( strrchr( $PATH, ":" ), 1 );
echo "最后的路径为: ".$dir;
?>

参考


函式:strrev()

字串处理函式库

strrev

颠倒字串。

语法: string strrev(string string);

传回值: 字串

函式种类: 资料处理

内容说明

将字串前后颠倒。

使用范例

下例的传回字串为 "gneP nosliW"

<?
$str=strrev("Wilson Peng");
echo $str;
?>


函式:strrpos()

字串处理函式库

strrpos

寻找字串中某字元最后出现处。

语法: int strrpos(string haystack, char needle);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来寻找字串 haystack 中的字元 needle 最后出现的位置。值得注意的是 needle 只能是一个字元，中文字等就不适合了。若找不到指定的字元，则传回 false 值。

参考


函式:strspn()

字串处理函式库

strspn

找出某字串落在另一字串遮罩的数目。

语法: int strspn(string str1, string str2);

传回值: 整数

函式种类: 资料处理

内容说明

本函式将 str2 字串当遮罩，可用来计算 str1 字串中有几个字元落在 str2 遮罩中。

参考

strcspn()


函式:strstr()

字串处理函式库

strstr

传回字串中某字串开始处至结束的字串。

语法: string strstr(string haystack, string needle);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将 needle 最先出现在 haystack 处起至 haystack 结束的字串传回。若找不到 needle 则传回 false。

参考


函式:strtok()

字串处理函式库

strtok

切开字串。

语法: string strtok(string arg1, string arg2);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字串 arg1 依字串 arg2 的值切开成小段小段的字串。

使用范例

本例将 I will be back 字串依空白切开。

<?php
$string = "I will be back";
$tok = strtok($string," ");
while($tok) {
echo "单字=$tok<br>";
$tok = strtok(" ");
}
?>

参考


函式:strtolower()

字串处理函式库

strtolower

字串全转为小写。

语法: string strtolower(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字串 str 全部变小写字串。

参考


函式:strtoupper()

字串处理函式库

strtoupper

字串全转为大写。

语法: string strtoupper(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字串 str 全部变大写字串。

参考


函式:strtr()

字串处理函式库

strtr

转换某些字元。

语法: string strtr(string str, string from, string to);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字串 str 中和 from 有关的字元一一转成 to 的字元。

参考

ereg_replace()


函式:strval()

变数处理函式库

strval

将变数转成字串型态。

语法: string strval(mixed var);

传回值: 字串

函式种类: PHP 系统功能

内容说明

本函式可将阵列及物件之外的变数型态转换成字串型态。

参考


函式:substr()

字串处理函式库

substr

取部份字串。

语法: string substr(string string, int start, int [length]);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将字串 string 的第 start 位元起的字串取出 length 个字元。若 start 为负数，则从字串尾端算起。若可省略的参数 length 存在，但为负数，则表示取到倒数第 length 个字元。

使用范例

<?
echo substr("abcdef", 1, 3); // 传回 "bcd"
echo substr("abcdef", -2); // 传回 "ef"
echo substr("abcdef", -3, 1); // 传回 "d"
echo substr("abcdef", 1, -1); // 传回 "bcde"
?>

参考


函式:sybase_affected_rows()

Sybase 资料库函式库

sybase_affected_rows

取得最后 query 影响的列数。

语法: int sybase_affected_rows(int [link_identifier]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来取得最后一次对资料库下 query 指令所影响的列数，会影响的为 INSERT、UPDATE 或 DELETE 等指令，而 SELECT 不会影响。参数 link_identifier 可省略，为开启资料库的连线代号。传回值即为列数。


函式:sybase_close()

Sybase 资料库函式库

sybase_close

关闭与资料库的连线。

语法: boolean sybase_close(int link_identifier);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来关闭与 Sybase 资料库的连线，能关闭的为使用 sybase_connect() 函式开启的资料库，若使用 sybase_pconnect() 开启的资料库则不能以本函式关闭。参数 link_identifier 可省略，为开启资料库的连线代号。关闭成功则传回 true 值。

参考


函式:sybase_connect()

Sybase 资料库函式库

sybase_connect

连上资料库。

语法: int sybase_connect(string [servername], string [username], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式用来开启与 Sybase 资料库的连线。参数 servername 为欲连上的资料库伺服器名称。参数 username 及 password 可省略，分别为连线使用的帐号及密码。使用本函式需注意早点关闭资料库，以减少系统的负担。连线成功则传回资料库的连线代号，失败传回 false 值。

参考


函式:sybase_data_seek()

Sybase 资料库函式库

sybase_data_seek

移动列指标。

语法: boolean sybase_data_seek(int result_identifier, int row_number);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式用来移动 Sybase 资料表中的列指标到指定的列上，可供 sybase_fetch_row() 等函式使用。参数 result_identifier 为查询的代号值。参数 row_number 则为欲移往的列数。若失败则传回 false 值。

参考


函式:sybase_fetch_array()

Sybase 资料库函式库

sybase_fetch_array

传回阵列资料。

语法: array sybase_fetch_array(int result);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料，则传回 false 值。而本函式可以说是 sybase_fetch_row() 的加强函式，除可以将传回列及数字索引放入阵列之外，还可以将文字索引放入阵列中。

使用范例

这是 joey@samaritan.com (22-Feb-1999) 所提出的例子

<?php
$q = sybase_query("SELECT COUNT(DISTINCT OPPORTUNITY_ID) FROM M_OPP_INTERESTS WHERE INTEREST_ID = $i_id", $db);
while ($op_by_int = sybase_fetch_array($q)) {
while (list($k, $v) = each($op_by_int)) {
echo "\$op[$k] => $v\n";
}
?>

传回资料如下
$op[0] => 2164
$op[computed] => 2164


函式:sybase_fetch_field()

Sybase 资料库函式库

sybase_fetch_field

取得栏位资讯。

语法: object sybase_fetch_field(int result, int field_offset);

传回值: 物件

函式种类: 数学运算

内容说明

本函式传回的物件资料为 result 的栏位 (Column) 资讯。传回物件的属性如下：

  • name - 栏位名称
  • column_source -栏位所在表格的资料表名称
  • max_length - 栏位的最大长度
  • numeric - 若为 1 表示本栏位为数字型态 (numeric)

参考

sybase_field_seek()


函式:sybase_fetch_object()

Sybase 资料库函式库

sybase_fetch_object

传回物件资料。

语法: object sybase_fetch_object(int result);

传回值: 物件

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 拆到物件变数中。使用方法和 sybase_fetch_array() 几乎相同，不同的地方在于本函式传回资料是物件而不是阵列。若 result 没有资料，则传回 false 值。另外值得注意的地方是，取回的物件资料的索引只能是文字而不能用数字，这是因为物件的特性。物件资料的特性中所有的属性 (property) 名称都不能是数字，因此只好乖乖使用文字字串当索引了。关于速度方面，本函式的处理速度几乎和 sybase_fetch_array() 及 sybase_fetch_row() 二函式差不多，要用哪个函式还是看使用的需求决定。

参考


函式:sybase_fetch_row()

Sybase 资料库函式库

sybase_fetch_row

传回单列的各栏位。

语法: array sybase_fetch_row(int result);

传回值: 阵列

函式种类: 资料库功能

内容说明

本函式用来将查询结果 result 之单列拆到阵列变数中。阵列的索引是数字索引，第一个的索引值是 0。若 result 没有资料，则传回 false 值。

参考


函式:sybase_field_seek()

Sybase 资料库函式库

sybase_field_seek

设定指标到传回值的某栏位。

语法: int sybase_field_seek(int result, int field_offset);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式设定目前的指标到传回值的特定栏位中。参数 result 为传回值代码。参数 field_offset 则为指定的栏位序数。

参考

sybase_fetch_field()


函式:sybase_free_result()

Sybase 资料库函式库

sybase_free_result

释放传回占用记忆体。

语法: int sybase_free_result(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以释放目前 Sybase 资料库 query 传回所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式。PHP 程式会在结束时自动释放。


函式:sybase_num_fields()

Sybase 资料库函式库

sybase_num_fields

取得传回栏位的数目。

语法: int sybase_num_fields(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回栏位的数目。参数 result 为传回值代码。

参考


函式:sybase_num_rows()

Sybase 资料库函式库

sybase_num_rows

取得传回列的数目。

语法: int sybase_num_rows(int result);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式可以得到传回列的数目。参数 result 为传回值代码。

参考


函式:sybase_pconnect()

Sybase 资料库函式库

sybase_pconnect

开启伺服器长期连线。

语法: int sybase_pconnect(string [servername], string [username], string [password]);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式和 sybase_connect() 雷同。不同的地方在于使用本函式开启资料库时，程式会先寻找是否曾经执行过本函式，若执行过则传回先前执行的 ID。另一个不同的地方是本函式无法使用 sybase_close() 关闭资料库。参数 servername 为欲连上的资料库伺服器名称。参数 username 及 password 可省略，分别为连线使用的帐号及密码。


函式:sybase_query()

Sybase 资料库函式库

sybase_query

送出一个 query 字串。

语法: boolean sybase_query(string query, int plink_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式送出 query 字串供 Sybase 做相关的处理或者执行。若没有指定 link_identifier 参数，则程式会自动寻找最近开启的 ID。成功则传回 true 值。


函式:sybase_result()

Sybase 资料库函式库

sybase_result

取得查询 (query) 的结果。

语法: int sybase_result(int result, int row, mixed field);

传回值: 整数

函式种类: 资料库功能

内容说明

本函式取得一格 query 的结果。参数 field 可以是栏位名称、顺序或者是 fieldname.tablename 的格式。在传回资料量少时，可以使用本函式来处理。当资料库大时，本函式的效率就有待考量了，这时可以使用较有效率的 sybase_fetch_row()、sybase_fetch_array() 或 sybase_fetch_object() 等函式。


函式:sybase_select_db()

Sybase 资料库函式库

sybase_select_db

选择一个资料库。

语法: boolean sybase_select_db(string database_name, int [link_identifier]);

传回值: 布林值

函式种类: 资料库功能

内容说明

本函式选择 Sybase 中的资料库以供之后的资料查询作业 (query) 处理。成功传回 true，失败则传回 false。


函式:symlink()

档案系统函式库

symlink

建立符号连结 (symbolic link)。

语法: int symlink(string target, string link);

传回值: 整数

函式种类: 档案存取

内容说明

本函式可用来建立符号连结。从参数 target 连结到 link 处。建立硬式连结可用 link() 函式。

参考


函式:syslog()

网路函式库

syslog

纪录至系统纪录。

语法: int syslog(int priority, string message);

传回值: 整数

函式种类: 作业系统与环境

内容说明

本函式将 message 字串写到系统纪录中，参数 priority 的值可能为 LOG_EMERG、LOG_ALERT、LOG_CRIT、LOG_ERR、LOG_WARNING、LOG_NOTICE、LOG_INFO、LOG_DEBUG。本函式呼叫 UNIX 作业系统的 syslog() 函数，在 Windows NT 上，使用事件检视器模拟出本功能。

参考


函式:system()

程式执行功能函式库

system

执行外部程式并显示输出资料。

语法: string system(string command, int [return_var]);

传回值: 字串

函式种类: 作业系统与环境

内容说明

本函式就像是 C 语中的函式 system()，用来执行指令，并输出结果。若是 return_var 参数存在，则执行 command 之后的状态会填入 return_var 中。同样值得注意的是若需要处理使用者输入的资料，而又要防止使用者耍花招破解系统，则可以使用 EscapeShellCmd()。若 PHP 以模组式的执行，本函式会在每一行输出后自动更新 Web 伺服器的输出缓冲暂存区。若需要完整的传回字串，且不想经过不必要的其它中间的输出介面，可以使用 PassThru()。

参考


函式:Tan()

数学运算函式库

Tan

正切计算。

语法: float tan(float arg);

传回值: 浮点数

函式种类: 数学运算

内容说明

本函式计算参数 arg 的正切值 (tangent)。

参考


函式:tempnam()

档案系统函式库

tempnam

建立唯一的临时档。

语法: string tempnam(string dir, string prefix);

传回值: 字串

函式种类: 档案存取

内容说明

本函式可建立一个临时档，档名不会与同目录中的档案重覆。传回字串就是建立的临时档名。若发生错误则传回空字串。

使用范例

<?
$tmpfname = tempnam( "/tmp", "HAHA" );
?>


函式:time()

日期与时间函式库

time

取得目前时间的 UNIX 时间戳记。

语法: int time(void);

传回值: 整数

函式种类: 时间日期

内容说明

传回目前时间的戳记值。

参考

date()


函式:touch()

档案系统函式库

touch

设定最后修改时间。

语法: int touch(string filename, int [time]);

传回值: 整数

函式种类: 档案存取

内容说明

本函式可用来设定最后修改时间。若有指定参数 time，则依指定的时间；若无指定时间，则为伺服器的时间。和 UNIX 的同名指令一样，若档案不存在，则会建立 filename 档案。成功则传回 true 值，其它失败时则传回 false。


函式:trim()

字串处理函式库

trim

截去字串首尾的空格。

语法: string trim(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式传回字串 string 首尾的空白字元去除后的字串。

参考


函式:uasort()

阵列处理函式库

uasort

将阵列依使用者自定的函式排序。

语法: void uasort(array array, function cmp_function);

传回值: 无

函式种类: 资料处理

内容说明

本函式将阵列依使用者自定的方式重排，当然元素的索引和值仍然保持对应的关系。当您觉得需要自行设计排序的方式时，可以先自订处理函式，再使用本函式将阵列值排序。

参考


函式:ucfirst()

字串处理函式库

ucfirst

将字串第一个字元改大写。

语法: string ucfirst(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式传回字串 str 第一个字的字首字母改成大写。

参考


函式:ucwords()

字串处理函式库

ucwords

将字串每个字第一个字母改大写。

语法: string ucwords(string str);

传回值: 字串

函式种类: 资料处理

内容说明

本函式传回字串 str 每个字的字首字母全都改成大写。

参考


函式:uksort()

阵列处理函式库

uksort

将阵列的索引依使用者自定的函式排序。

语法: void uksort(array array, function cmp_function);

传回值: 无

函式种类: 资料处理

内容说明

本函式将阵列的索引依使用者自定的方式重排，cmp_function 即使用者自行开发的函式。

使用范例

<?
function mycompare($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array(4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");
uksort($a, mycompare);
while(list($key, $value) = each($a)) {
echo "$key: $value\n";
}
?>

上面的程式传回资料为
20: twenty
10: ten
4: four
3: three

参考


函式:umask()

档案系统函式库

umask

改变目前的档案属性遮罩 umask。

语法: int umask(int [mask]);

传回值: 整数

函式种类: 档案存取

内容说明

本函式用来设定 PHP 的 umask 值。此值是 mask 与 0777 运算的值，传回旧的 umask 值。当参数 mask 不存在时，本函式将传回目前的 umask 值。


函式:uniqid()

杂项函式库

uniqid

产生唯一的值。

语法: string uniqid(string prefix);

传回值: 字串

函式种类: 编码处理

内容说明

本函式会依据当时的毫秒以及指定的前置字串产生一个独一无二的字串。参数 prefix 为前置的字串，最多可达 114 字元。

使用范例

本例产生 32 个字元的独一无二字串。

<?php
$token = md5(uniqid(rand()));
echo $token;
?>


函式:unlink()

档案系统函式库

unlink

删除档案。

语法: int unlink(string filename);

传回值: 整数

函式种类: 档案存取

内容说明

本函式删除档案 filename，用法像 UNIX 中 C 语言呼叫的同名函式 unlink()。当发生错误则传回 0 或 false。

参考

rmdir()


函式:unpack()

杂项函式库

unpack

解压缩位元字串资料。

语法: string pack(string format, mixed [args]...);

传回值: 阵列

函式种类: 资料处理

内容说明

本函式用来将位元的字串的资料解压缩。本函式和 Perl 的同名函式功能用法完全相同。参数 format 为压缩的格式，参见 pack 的格式表。

参考

pack()


函式:unserialize()

杂项函式库

unserialize

取出系统资料。

语法: mixed unserialize(string str);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

本函式可取出系统资料。储存的资料以 byte-stream 方式存放。传回值为混合型态，包括整数、倍精确浮点数字串、阵列以及物件的属性 (物件的方法无法储存)。

使用范例

<?php
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array($PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata) || !odbc_fetch_into($stmt, &$tmp)) {
// 若执行则 $session_data 设为空值
$session_data = array();
} else {
// 取出 $tmp[0] 值
$session_data = unserialize($tmp[0]);
if (!is_array($session_data)) {
// 出现错误则将 $session_data 清除
$session_data = array();
}
}
?>

参考

serialize()


函式:unset()

变数处理函式库

unset

删除变数。

语法: int unset(mixed var);

传回值: 整数

函式种类: PHP 系统功能

内容说明

本函式将变数删除，成功则传回 true 值。

参考

isset() empty()

[ 上一页 ]


函式:urldecode()

URL 处理函式库

urldecode

还原 URL 编码字串。

语法: string urldecode(string str);

传回值: 字串

函式种类: 编码处理

内容说明

本函式将 URL 编码后字串还原成未编码的样子。编码使用 %## 的格式。

参考

urlencode()


函式:urlencode()

URL 处理函式库

urlencode

将字串以 URL 编码。

语法: string urlencode(string str);

传回值: 字串

函式种类: 编码处理

内容说明

本函式将字串以 URL 编码。例如空格就会变成加号。Homepage 中 form 资料传送就是用 urlencode 编码后再送出。

使用范例

本例将中文字串以 URL 编码过，转给别的 CGI 使用

<?php
$EncodeStr=urlencode($ChineseName);
echo "<a href=/cgi/personal.cgi?n=$EncodeStr>个人资讯</a>";
?>

参考

urldecode()


函式:usleep()

杂项函式库

usleep

暂停执行。

语法: void usleep(int micro_seconds);

传回值: 无

函式种类: PHP 系统功能

内容说明

本函式可暂时使程式停止执行。参数 micro_seconds 为要暂停的毫秒数。

参考

sleep()

[ 上一页 ]


函式:usort()

阵列处理函式库

usort

将阵列的值依使用者自定的函式排序。

语法: void usort(array array, function cmp_function);

传回值: 无

函式种类: 资料处理

内容说明

本函式将阵列的值依使用者自定的方式重排。若程式中需要使用特殊的排序方式，则可以使用这个函式。

使用范例

<?
function cmp($a,$b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array(3,2,5,6,1);
usort($a, cmp);
while(list($key,$value) = each($a)) {
echo "$key: $value\n";
}
?>

此例的传回值为
0: 6
1: 5
2: 3
3: 2
4: 1

参考


函式:utf8_decode()

XML 剖析函式库

utf8_decode

将 UTF-8 码转成 ISO-8859-1 码。

语法: string utf8_decode(string data);

传回值: 字串

函式种类: 资料处理

内容说明

本函式用来将 UTF-8 内码转成 ISO-8859-1 内码。参数 data 为待转换的字串。

参考

utf8_encode()


函式:utf8_encode()

XML 剖析函式库

utf8_encode

将 ISO-8859-1 码转成 UTF-8 码。

语法: string utf8_decode(string data);

传回值: 字串

函式种类: 资料处理

内容说明

本函式用来将 ISO-8859-1 内码转成 UTF-8 内码。参数 data 为待转换的字串。

参考

utf8_decode()


函式:virtual()

阿帕契伺服器专用函式库

virtual

完成阿帕契伺服器的子请求 (sub-request)。

语法: int virtual(string filename);

传回值: 整数

函式种类: PHP 系统功能

内容说明

这个函式就等于使用伺服器端剖析 (SSI) 的 shtml 功能。值得注意的是 virtual 所引入的程式必须要产生有效的 HTTP 档头，最少要加入 Content-type 档头、或者是 Location 档头、或者 Status 档头。并且根据 HTTP 协定，在档头结束后尚必须空一行。在 PHP 的程式实作时，可使用 include() 或 require() 这二个函式。


函式:vm_addalias()

Vmailmgr 邮件处理函式库

vm_addalias

加入新别名。

语法: boolean vm_addalias(string vdomain, string basepwd, string username, string alias);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来加入新的别名。参数 username 为使用者的帐号。参数 alias 为欲新增的别名。


函式:vm_adduser()

Vmailmgr 邮件处理函式库

vm_adduser

加入新使用者。

语法: boolean vm_adduser(string vdomain, string basepwd, string newusername, string newuserpassword);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来加入新的使用者。参数 newusername 及 newuserpassword 分别为使用者的帐号及密码。


函式:vm_delalias()

Vmailmgr 邮件处理函式库

vm_delalias

删除别名。

语法: boolean vm_delalias(string vdomain, string basepwd, string alias);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来加入新的别名。参数 alias 为欲删除的别名。


函式:vm_deluser()

Vmailmgr 邮件处理函式库

vm_deluser

删除使用者。

语法: boolean vm_deluser(string vdomain, string username);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来删除指定使用者。参数 username 为欲删除的使用者帐号。


函式:vm_passwd()

Vmailmgr 邮件处理函式库

vm_passwd

改变使用者密码。

语法: boolean vm_passwd(string vdomain, string username, string password, string newpassword);

传回值: 布林值

函式种类: 网路系统

内容说明

本函式用来改变指定使用者密码。参数 username 为使用者的帐号。参数 password 为旧的密码。参数 newpassword 为新的密码。


函式:wddx_add_vars()

WDDX 函式库

wddx_add_vars

将 WDDX 封包连续化。

语法: boolean wddx_add_vars(int packet_id, ...);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式将多个 WDDX 封包 (packet) 连续化成一个。若有错误则传回 false。


函式:wddx_deserialize()

WDDX 函式库

wddx_deserialize

将 WDDX 封包解连续化。

语法: mixed wddx_deserialize(string packet);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

本函式将 WDDX 封包 (packet) 解连续化成分散资料。参数 packet 为封包字串。传回值可能为字串、数字、或者阵列等。


函式:wddx_packet_end()

WDDX 函式库

wddx_packet_end

结束的 WDDX 封包。

语法: string wddx_packet_end(int packet_id);

传回值: 字串

函式种类: 资料处理

内容说明

本函式结束 WDDX 封包 (packet)，并传回封包的资料字串。参数 packet_id 为封包的代码。


函式:wddx_packet_start()

WDDX 函式库

wddx_packet_start

开始新的 WDDX 封包。

语法: int wddx_packet_start(string [comment]);

传回值: 整数

函式种类: 资料处理

内容说明

本函式开始新的 WDDX 封包 (packet)。


函式:wddx_serialize_value()

WDDX 函式库

wddx_serialize_value

将单一值连续化。

语法: string wddx_serialize_value(mixed var, string [comment]);

传回值: 字串

函式种类: 资料处理

内容说明

本函式将单一数值连续化，并将它送到 WDDX 封包中。参数 var 为值的内容。参数 comment 可省略，为在封包表头的字串。


函式:wddx_serialize_vars()

WDDX 函式库

wddx_serialize_vars

将多值连续化。

语法: string wddx_serialize_vars(string var_name | array var_names [, ... ] );

传回值: 字串

函式种类: 资料处理

内容说明

本函式将多数值连续化，并将它送到 WDDX 封包中。参数依次为值的内容，可以是字串或是阵列。

使用范例

<?php
$a = 1;
$b = 5.5;
$c = array("blue", "orange", "violet");
$d = "colors";
$clvars = array("c", "d");
print wddx_serialize_vars("a", "b", $clvars);
?>

传回浏览器的资料为

<wddxPacket version='0.9'><header/><data><struct><var name='a'><number>1</number></var>
<var name='b'><number>5.5</number></var><var name='c'><array length='3'>
<string>blue</string><string>orange</string><string>violet</string></array></var>
<var name='d'><string>colors</string></var></struct></data></wddxPacket>


函式:xml_error_string()

XML 剖析函式库

xml_error_string

取得 XML 错误字串。

语法: string xml_error_string(int code);

传回值: 字串

函式种类: 资料处理

内容说明

本函式可取得 XML 在处理时的错误代码。参数 code 为剖析错误代码。若无错误传回值为代码的文字描述字串。


函式:xml_get_current_byte_index()

XML 剖析函式库

xml_get_current_byte_index

取得目前剖析为第几个位元组。

语法: int xml_get_current_column_number(int parser);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来取得目前 XML 剖析所正在的位元组 (byte) 为第几个位元组。参数 parser 为剖析代码。若 parser 有错则传回 false 值，若无错误则传回位元序号。


函式:xml_get_current_column_number()

XML 剖析函式库

xml_get_current_column_number

获知目前剖析的第几栏位。

语法: int xml_get_current_column_number(int parser);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来取得目前 XML 剖析所正在处理行的第几个栏位。参数 parser 为剖析代码。若 parser 有错则传回 false 值，若无错误则传回栏位序数。


函式:xml_get_current_line_number()

XML 剖析函式库

xml_get_current_line_number

取得目前剖析的行号。

语法: int xml_get_current_line_number(int parser);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来取得目前 XML 剖析所正在处理的行号。参数 parser 为剖析代码。若 parser 有错则传回 false 值，若无错误则传回行号数字。


函式:xml_get_error_code()

XML 剖析函式库

xml_get_error_code

取得 XML 错误码。

语法: int xml_get_error_code(int parser);

传回值: 整数

函式种类: 资料处理

内容说明

本函式可取得 XML 在处理时的错误代码。参数 parser 为剖析代码。若 parser 有错则传回 false 值，否则就传回错误代码 (如 XML_ERROR_BINARY_ENTITY_REF .... 等等)。


函式:xml_parse()

XML 剖析函式库

xml_parse

剖析 XML 文件。

语法: boolean xml_parse(int parser, string data, int [isFinal]);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式用来剖析 XML 格式的文件资料。参数 parser 为剖析代码。参数 data 为剖析的资料区块 (chunk)。参数 isFinal 可省略，若设为 true 则系统会自动送出最后的资料区段 (piece) 给 data 参数。若无错误则传回 true 值。


函式:xml_parser_create()

XML 剖析函式库

xml_parser_create

初始 XML 剖析器。

语法: int xml_parser_create(string [encoding]);

传回值: 整数

函式种类: 资料处理

内容说明

本函式用来初始化一个新的 XML 剖析器。参数 encoding 可省略，为 XML 使用的字元集，内定值为 ISO-8859-1，其它尚有 US-ASCII、UTF-8 二种。成功则传回 parser 代码供其它函式使用，失败则传回 false 值。


函式:xml_parser_free()

XML 剖析函式库

xml_parser_free

释放剖析占用的记忆体。

语法: boolean xml_parser_free(int parser);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式用来释放目前 XML 剖析所使用的记忆体。参数 parser 为剖析代码。若没有错误则传回 true 值，否则传回 false 值。


函式:xml_parser_get_option()

XML 剖析函式库

xml_parser_get_option

取得剖析使用的选项。

语法: mixed xml_parser_get_option(int parser, int option);

传回值: 混合型态资料

函式种类: 资料处理

内容说明

本函式用来取得 XML 剖析所选用的选项。参数 parser 为剖析代码。参数 option 即为欲取得的选项常数名称，有 XML_OPTION_CASE_FOLDING 及 XML_OPTION_TARGET_ENCODING 二种。

参考

xml_parser_set_option()


函式:xml_parser_set_option()

XML 剖析函式库

xml_parser_set_option

设定剖析使用的选项。

语法: boolean xml_parser_set_option(int parser, int option, mixed value);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式用来设定 XML 剖析所选用的选项。参数 parser 为剖析代码。参数 option 即为欲设定的选项常数名称，见下表 (如: XML_OPTION_CASE_FOLDING)。参数 value 则为欲设定的值。若没有错误则传回 true 值，否则传回 false 值。

选项常数名称 | 型态 | 说明
XML_OPTION_CASE_FOLDING | 整数 | 设定是否允许 case-folding，内定值为允许
XML_OPTION_TARGET_ENCODING | 字串 | 设定目地的编码型态，有 ISO-8859-1、US-ASCII 及 UTF-8 等

参考

xml_parser_get_option()


函式:xml_set_character_data_handler()

XML 剖析函式库

xml_set_character_data_handler

建立字元资料标头。

语法: boolean xml_set_character_data_handler(int parser, string handler);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式设定字元资料的标头。参数 parser 为剖析代码。参数 handler 包括剖析代码及资料字串等二个元素。若无错误则传回 true 值。


函式:xml_set_default_handler()

XML 剖析函式库

xml_set_default_handler

建立内定标头。

语法: boolean xml_set_default_handler(int parser, string handler);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式设定内定的标头。参数 parser 为剖析代码。参数 handler 包括剖析代码及资料字串等二个元素。若无错误则传回 true 值。


函式:xml_set_element_handler()

XML 剖析函式库

xml_set_element_handler

设定元素的标头。

语法: boolean xml_set_element_handler(int parser, string startElementHandler, string endElementHandler);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式设定元素的标头供 xml_parse() 函式使用。参数 parser 为剖析代码。参数 startElementHandler 及 endElementHandler 分别为元素开始与结束的标头，其中的 startElementHandler 必须包括剖析代码、名称、与属性，而 endElementHandler 参数包括了剖析代码及名称二个参数。若无错误则传回 true 值。

使用范例

下列用来显示 XML 元素结构 (Element Structure)

<?php
$file = "data.xml";
$depth = array();

function startElement($parser, $name, $attrs)
{
global $depth;
for ($i = 0; $i < $depth[$parser]; $i++) {
print " ";
}
print "$name\n";
$depth[$parser]++;
}

function endElement($parser, $name, $attrs)
{
global $depth;
$depth[$parser]--;
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>


函式:xml_set_external_entity_ref_handler()

XML 剖析函式库

xml_set_external_entity_ref_handler

设定外部实体参引的标头。

语法: boolean xml_set_external_entity_ref_handler(int parser, string handler);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式设定外部实体参引 (external entity reference) 的标头。参数 parser 为剖析代码。参数 handler 包括剖析代码、开启实体名称、基底、系统识别符、与公用识别符等五个元素。若标头有错，可用 xml_get_error_code() 会传回 XML_ERROR_EXTERNAL_ENTITY_HANDLING。若无错误则传回 true 值。


函式:xml_set_notation_decl_handler()

XML 剖析函式库

xml_set_notation_decl_handler

设定记法宣告的标头。

语法: boolean xml_set_notation_decl_handler(int parser, string handler);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式设定记法宣告 (notation declaration) 的标头。参数 parser 为剖析代码。参数 handler 包括剖析代码、记法名称、基底、系统识别符、与公用识别符等五个元素。看起来应是类似如下的字串

<!NOTATION name {systemId | publicId}>

更多的细节可以参考 XML 1.0 的规格书，有关 Notation 的部份。若无错误则传回 true 值。


函式:xml_set_object()

XML 剖析函式库

xml_set_object

使 XML 剖析器用物件。

语法: void xml_set_object(int parser, object &object);

传回值: 无

函式种类: 资料处理

内容说明

本函式让剖析器能使用物件的方式，值得注意的是这个函式在 PHP 4.0 以上的版本才可使用。参数 parser 为 xml_parser_create() 所传回的剖析代码。参数 &object 是物件本身的指标。

使用范例

<?php
class xml {
var $parser;

function xml() {
$this->parser = xml_parser_create();
xml_set_object($this->parser,&$this);
xml_set_element_handler($this->parser,"tag_open","tag_close");
xml_set_character_data_handler($this->parser,"cdata");
}

function parse($data) {
xml_parse($this->parser,$data);
}

function tag_open($parser,$tag,$attributes) {
var_dump($parser,$tag,$attributes);
}

function cdata($parser,$cdata) {
var_dump($parser,$cdata);
}

function tag_close($parser,$tag) {
var_dump($parser,$tag);
}

} // end of class xml

$xml_parser = new xml();
$xml_parser->parse("<A ID=\"hallo\">PHP</A>");
?>


函式:xml_set_processing_instruction_handler()

XML 剖析函式库

xml_set_processing_instruction_handler

建立处理指令标头。

语法: boolean xml_set_processing_instruction_handler(int parser, string handler);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式设定处理指令 (Processing Instruction, 简称 PI) 的标头，处理指令类似下列行的格式

<?target data?>

参数 parser 为剖析代码。参数 handler 包括剖析代码、处理指令目标及资料字串等三个元素。若无错误则传回 true 值。


函式:xml_set_unparsed_entity_decl_handler()

XML 剖析函式库

xml_set_unparsed_entity_decl_handler

设定未剖析实体宣告的标头。

语法: boolean xml_set_unparsed_entity_decl_handler(int parser, string handler);

传回值: 布林值

函式种类: 资料处理

内容说明

本函式设定尚未经过剖析的实体宣告标头。参数 parser 为剖析代码。参数 handler 包括剖析代码、实体名称、基底、系统识别符、公用识别符、与记法名称等六个元素。看起来应是类似如下的字串

<!ENTITY name {publicId | systemId} NDATA notationName>

更多的细节可以参考 XML 1.0 的规格书，有关实体宣告的部份。若无错误则传回 true 值。


函式:yp_err_string()

NIS 函式库

yp_err_string

取得先前 YP 操作的错误字串。

语法: string yp_err_string(void);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来取得最后一次 YP 操作时的错误字串。本函式不需参数。


函式:yp_errno()

NIS 函式库

yp_errno

取得先前 YP 操作的错误码。

语法: int yp_errno(void);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得最后一次 YP 操作时的错误代码，代码值及意义见下表

代码 | 意义
1 | 函式的参数有错
2 | RPC 错误 - 不再系着 Domain
3 | 在 Domain 上无法系住伺服器
4 | Domain 上找不到指定的 map
5 | Map 上找不到指定的索引键
6 | YP 内部有错
7 | 资源取得错误
8 | 指定 Map 资料库中已无资料
9 | 无法与 portmapper 通讯
10 | 无法与 ypbind 通讯
11 | 无法与 ypserv 通讯
12 | 未设定本地的 Domain
13 | YP 资料库有错
14 | YP 版本不合
15 | 暴力存取
16 | 资料忙线中


函式:yp_first()

NIS 函式库

yp_first

传回 map 上第一笔符合的资料。

语法: array yp_first(string domain, string map);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得指定 map 上第一笔传回资料的索引和其值。传回资料为阵列，若失败则传回 false。

使用范例

<?php
$entry = yp_first($domain, "passwd.byname");
if(!$entry) {
echo yp_errno() . ": " . yp_err_string();
}
$key = key($entry);
echo "第一笔索引为: ".$key."\n";
echo "其值为: ".$entry[$key];
?>

参考


函式:yp_get_default_domain()

NIS 函式库

yp_get_default_domain

取得机器的 Domain。

语法: string yp_get_default_domain(void);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来寻找伺服器本身所处的 Domain。执行成功则传回 Domain 字串，失败则传回 false。本函式执行时不需要加参数。

使用范例

<?php
$domain = yp_get_default_domain();
if(!$domain) {
echo yp_errno() . ": " . yp_err_string();
}
echo "NIS 的 domain 为: " . $domain;
?>

参考


函式:yp_master()

NIS 函式库

yp_master

取得 NIS 的 Master。

语法: string yp_master(string domain, string map);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来获取目前所在 Domain 上的 Master 机器，在取得 Domain 及 map 之后使用。

参考


函式:yp_match()

NIS 函式库

yp_match

取得指定资料。

语法: string yp_match(string domain, string map, string key);

传回值: 字串

函式种类: 网路系统

内容说明

本函式用来获取指定 Domain 中 Map 中的指定资料。参数 key 可指定使用者名称等。

使用范例

下例用来取得 wilson 的资讯

<?php
$entry = yp_match($domain, "passwd.byname", "wilson");
if(!$entry) {
echo yp_errno() . ": " . yp_err_string();
}
echo "取得字串为: " . $entry;
?>

传回字串类似下面的字串
wilson:##wilson:12345:380:Wilson Peng:/home/wilson:/bin/bash

参考


函式:yp_next()

NIS 函式库

yp_next

指定 map 的下笔资料。

语法: array yp_next(string domain, string map, string key);

传回值: 阵列

函式种类: 网路系统

内容说明

本函式用来取得 map 上指定资料的下笔传回资料的索引和其值。传回资料为阵列，若失败则传回 false。

使用范例

<?php
$entry = yp_next($domain, "passwd.byname", "wilson");
if(!$entry) {
echo yp_errno() . ": " . yp_err_string();
}
$key = key($entry);
echo "Wilson 后的索引为: ".$key."\n";
echo "其值为: " . $entry[$key];
?>

参考


函式:yp_order()

NIS 函式库

yp_order

传回 map 的序数。

语法: int yp_order(string domain, string map);

传回值: 整数

函式种类: 网路系统

内容说明

本函式用来取得 map 的序数，在取得 Domain 及 map 之后使用。传回值为 map 序数，若失败则传回 false。

使用范例

<?php
$number = yp_order($domain, $mapname);
if(!$number) {
echo yp_errno() . ": " . yp_err_string();
}
echo "Map 序数为: " . $order;
?>

参考


序

扮演 Webmaster 的角色已经六年了，从早期的 CERN 及 NCSA 伺服器，后来的 Netscape Enterprise 伺服器，到现在一统天下的 Apache，面对开发 CGI 的程式时，总是有事倍功半的感慨。印象最深刻的就是在 WindowsNT IIS 上，使用 Delphi，呼叫 ISAPI 及 OLE 来连接 SQL Server，那真是段痛苦的日子。

而网路早就不知改朝换代了几次，单浏览器就从 Moasic/Lynx 的草创，到 Netscape 的独大，最后由 Internet Explorer 成为新霸权，在新的廿一世纪开始之后，Linux 及 Open Source (包括 Mozilla) 也将撼动微软的帝国。面对每天都在改变的网路，Webmaster 苦哈哈的写程式，再嵌入视觉画面，最后再编译程式，设定系统环境，结果还很不容易除错。相信唯一的救赎，不是只有 ODBC 功能的 ASP，而是属于开放社群的 PHP。

面对百倍速的 Internet，PHP 应是网站工作者所需具备的基本能力，否则将很快地被 Internet 洪流刷下来。无论要架个人的网站、电子商务的网站、甚至大型的入口网站或小型的群组网站，PHP 成功的例子实在太多了。国内的一些系统软体公司也开始支援 PHP，如 DBMaker 就是最好的例子。

在 PHP3 正式问世之后，兴起了扮演这个解放所有 Webmaster 程式的传教士的念头，同时也兴起自由文件的想法。知识应可以用不同的方式呈现，无论是虚拟的网页、传统的书本、或新一代随身电子书。很高兴能遇到有相同理念的迪茂国际出版社李总，并大力支持这一个想法，于是有了这么一本书。同时也获得 BIGLOBE 旧同事支持，于是有了这么一个网站 http://php.wilson.gs。

严格而言，本书实在不太适合刚入门的网路工作者，尤其是不了解 HTTP 及 HTML 的话，可能会比较吃力。不过天下无难事，相信只要全力投入，在数个月间，就可以从网路新兵变成专业老鸟。对于已有其它 CGI 经验 (如 Prel、C、Python、Java 等) 的资深网路工作者，本书应能让您以最短的时间，操作这最强的利器，让您的生产力大增。甚至您若原是微软的爱用者，本书可以让您从 ASP 跃升到全功能的 PHP。

PHP BIBLE 前后大约写了十个月，几乎每天都敲到凌晨三点。常常想，Open Source 及开放社群真是除了狂热份子，不是正常人可以干的，连 PHP 原创者 Rasmus Lerdorf 都要在结婚前，求网友寄明信片给他未婚妻，说明不是只有 Rasmus Lerdorf 自己的狂热。

当然该感谢父母，每天睡觉都要忍受我用英文打字机练出来的键盘声到三点；同其它的电脑狂一样，和交往多年的女友相处的时间，其实没有我和电脑相处时间的十分之一，唉，真是抱歉。

彭武兴

[ 下一页 ]