Ownsight

?找回密码
?立即注册
搜索
热搜: 活动 交友 discuz
查看: 1402|回复: 0
打印 上一主题 下一主题

PHP preg_match_all

[复制链接]

803

主题

903

帖子

3201

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3201
跳转到指定楼层
楼主
发表于 2014-10-2 07:02:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

preg_match_all

(PHP 4, PHP 5)

preg_match_all — 执行一个全局正则表达式匹配
说明
int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中.

在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.
参数

pattern

? ? 要搜索的模式,字符串形式。
subject

? ? 输入字符串。
matches

? ? 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。
flags

? ? 可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER和 PREG_SET_ORDER):

? ? PREG_PATTERN_ORDER

? ?? ???结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。

? ?? ??? ? ?? ???preg_match_all("|<[^>]+>(.*)]+>|U",
? ?? ?? ?? ?"example:
this is a test
",
? ?? ?? ?? ?$out, PREG_PATTERN_ORDER);
? ?? ???echo $out[0][0] . ", " . $out[0][1] . "\n";
? ?? ???echo $out[1][0] . ", " . $out[1][1] . "\n";
? ?? ????>

? ?? ???以上例程会输出:

? ?? ???example: ,
this is a test

? ?? ???example: , this is a test

? ?? ???因此, $out[0]是包含匹配完整模式的字符串的数组, $out[1]是包含闭合标签内的字符串的数组。
? ? PREG_SET_ORDER

? ?? ???结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。
? ?? ??? ? ?? ???preg_match_all("|<[^>]+>(.*)]+>|U",
? ?? ?? ?? ?"example:
this is a test
",
? ?? ?? ?? ?$out, PREG_SET_ORDER);
? ?? ???echo $out[0][0] . ", " . $out[0][1] . "\n";
? ?? ???echo $out[1][0] . ", " . $out[1][1] . "\n";
? ?? ????>

? ?? ???以上例程会输出:

? ?? ???example: , example:
? ?? ???
this is a test
, this is a test

? ? PREG_OFFSET_CAPTURE

? ?? ???如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。 注意这会改变matches中的每一个匹配结果字符串元素,使其 成为一个第0个元素为匹配结果字符串,第1个元素为 匹配结果字符串在subject中的偏移量。

? ? 如果没有给定排序标记,假定设置为PREG_PATTERN_ORDER。
offset

? ? 通常, 查找时从目标字符串的开始位置开始。可选参数offset用于 从目标字符串中指定位置开始搜索(单位是字节)。

? ?? ???Note:

? ?? ???使用 offset 参数不同于传递 substr($subject, $offset) 的 结果到 preg_match_all() 作为目标字符串,因为 pattern 可以包含断言比如^, $ 或者 (?<=x) 。 示例查看 preg_match()。

返回值

返回完整匹配次数(可能是0),或者如果发生错误返回FALSE。

转自:
http://php.net/manual/zh/function.preg-match-all.php


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表