PHP preg_match PCRE 正则函数
-
定义和用法
preg_match - 执行匹配正则表达式 -
版本支持
PHP4 PHP5 PHP7 支持 支持 支持 5.3.6 如果 offset 大于 subject 的程度,将返回 FALSE。
5.2.2 子命名分组语法可以接受(?<name>),(?'name')以及 (?P<name>)了。 之前版本仅接受(?P<name>)方式。
-
语法
preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
搜索subject与pattern给定的正则表达式的一个匹配. -
参数
参数 必需的 描述 pattern 是 要搜索的模式,字符串形式。 subject 是 输入字符串。 matches 否 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。 flags 否 可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER和 PREG_SET_ORDER): - PREG_PATTERN_ORDER - 结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。
- PREG_SET_ORDER - 结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。
- PREG_OFFSET_CAPTURE - 如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。 注意这会改变matches中的每一个匹配结果字符串元素,使其 成为一个第0个元素为匹配结果字符串,第1个元素为 匹配结果字符串在subject中的偏移量。
offset 否 通常, 查找时从目标字符串的开始位置开始。可选参数offset用于 从目标字符串中指定位置开始搜索(单位是字节)。 注意:使用 offset 参数不同于传递 substr($subject, $offset) 的 结果到 preg_match() 作为目标字符串,因为 pattern 可以包含断言比如^, $ 或者 (?<=x) 。 示例查看 preg_match()。
-
返回值
preg_match()返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后 将会停止搜索。preg_match_all()不同于此,它会一直搜索subject 直到到达结尾。 如果发生错误preg_match()返回 FALSE。 -
示例
尝试一下//模式分隔符后的"i"标记这是一个大小写不敏感的搜索 if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { echo "A match was found."; } else { echo "A match was not found."; }
-
相关函数
preg_quote() - 转义正则表达式字符preg_match_all() - 执行一个全局正则表达式匹配preg_replace() - 执行一个正则表达式的搜索和替换preg_split() - 通过一个正则表达式分隔字符串preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码