CXXIII. POSIX 扩展正则表达式函数

简介

提示: PHP 也支持使用 Perl 兼容语法的 PCRE 函数,支持 non-greedy 匹配,断言,条件子模式以及其它许多 POSIX 扩展正则表达式语法所不支持的特性。

警告

本类正则表达式并不能安全用于二进制模式。PCRE 函数则可以。

正则表达式在 PHP 中用来做复杂的字符串操作。PHP 使用 POSIX 扩展的正则表达式,其由 POSIX 1003.2 定义。对于 POSIX 正则表达式完整的说明见 regex 手册页,位于 PHP 发布包中的 regex 目录下。这是 UNIX 下的手册格式,需要用类似如下命令 man /usr/local/src/regex/regex.7 来阅读。

需求

要编译本扩展模块不需要外部库文件。

安装

警告

除非知道自己在做什么,否则不要改变 TYPE。

要激活 regexp 的支持在配置 PHP 时加上 --with-regex[=TYPE]。TYPE 可以是 system,apache 或 php 之一。默认使用 php。

PHP 的 Windows 版本已经内置该扩展模块的支持。无需加载任何附加扩展库即可使用这些函数。

运行时配置

本扩展模块在 php.ini 中未定义任何配置选项。

资源类型

本扩展模块未定义任何资源类型。

预定义常量

本扩展模块未定义任何常量。

范例

例子 1. 正则表达式例子

<?php
// 如果在 $string 中任何地方找到 "abc" 则返回 &true;
ereg ("abc", $string);

// 如果 $string 以 "abc" 开头则返回 &true;
ereg ("^abc", $string);

// 如果 $string 以 "abc" 结尾则返回 &true;
ereg ("abc$", $string);

// 如果用户浏览器是 Netscape 2,3 或 MSIE 3 则返回 &true;
eregi ("(ozilla.[23]|MSIE.3)", $HTTP_USER_AGENT);

// 将三个空格分隔的单词放入 $regs[1],$regs[2] 和 $regs[3] 中
ereg ("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)", $string,$regs);

// 将 <br /> 标记放到 $string 开头
$string = ereg_replace ("^", "<br />", $string);

// 将 <br /> 标记放到 $string 结尾
$string = ereg_replace ("$", "<br />", $string);

// 删除 $string 中的所有换行符
$string = ereg_replace ("\n", "", $string);
?>

参见

Perl 兼容语法的正则表达式见 PCRE 函数。简单的命令行解释器风格的通配符匹配由 fnmatch() 提供。

目录
ereg_replace -- 替换正则表达式
ereg -- 正则表达式匹配
eregi_replace -- 不区分大小写替换正则表达式
eregi -- 不区分大小写的正则表达式匹配
split -- 用正则表达式将字符串分割到数组中
spliti --  用正则表达式不区分大小写将字符串分割到数组中
sql_regcase --  产生用于不区分大小的匹配的正则表达式