php爬虫技术2:


php正则匹配函数

1. preg_match       执行匹配正则表达式
2. preg_match_all   执行一个全局正则表达式匹配
3. preg_replace     执行一个正则表达式的搜索和替换
4. preg_filter      执行一个正则表达式搜索和替换
5. preg_quote       转义正则表达式字符
6. preg_grep        返回匹配模式的数组条目
7. preg_split       通过一个正则表达式分隔字符串

1. preg_match 执行匹配正则表达式

参数 描述
pattern 必需。要搜索的模式,字符串类型。(正则表达式)
subject 必需。被查询的字符串。
matches 可选。搜索结果。

示例:

    $pattem = '/[0-9]/';
    $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk';
    $a = preg_match($pattem,$subject,$matches);
    var_dump($a);       // 输出匹配次数
    var_dump($matches); // 输出匹配结果

2. preg_match_all 执行一个全局正则表达式匹配

参数 描述
pattern 必需。要搜索的模式,字符串类型。(正则表达式)
subject 必需。被查询的字符串。
matches 可选。搜索结果。

示例:

    $pattem = '/[0-9]/';
    $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk';
    $a = preg_match_all($pattem,$subject,$matches);
    var_dump($a);       // 输出匹配次数
    var_dump($matches); // 输出匹配结果

3. preg_replace 执行一个正则表达式的搜索和替换

参数 描述
pattern 必需。要搜索的模式,可以使一个字符串或字符串数组。(正则表达式)
replacement 必需。用于替换的字符串或字符串数组。
subject 必需。被查询的字符串或字符串数组。
limit 可选。进行替换的最大次数。默认是 -1(无限)。

示例1:

    $pattem = '/ouyangke/';
    $replacement = '欧阳克';
    $subject = '11112222333344445555666677778888999900000
        aaabbbcccdddeeefffggghhhiiijjjjkkkk
        llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx   ouyangke ouyangke ouyangke zhulaoshi zhulaoshi zhulaoshi ximen ximen ximen ';
    $a = preg_replace($pattem, $replacement, $subject);
    var_dump($a);

示例2:

    $pattem = array('/ouyangke/','/ximen/');
    $replacement = array('欧阳克','西门大官人');
    $subject = array(
        '11112222333344445555666677778888999900000
        aaabbbcccdddeeefffggghhhiiijjjjkkkk
        llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke ',
        'ouyangke ouyangke ouyangke zhulaoshizhulaoshi ximen ximen ximen '
    );
    $a = preg_replace($pattem, $replacement, $subject);
    var_dump($a);

4. preg_filter 执行一个正则表达式搜索和替换

参数 描述
pattern 必需。要搜索的模式,可以使一个字符串或字符串数组。(正则表达式)
replacement 必需。用于替换的字符串或字符串数组。
subject 必需。被查询的字符串或字符串数组。
limit 可选。进行替换的最大次数。默认是 -1(无限)。

示例1:

    $pattem = '/ouyangke/';
    $replacement = '欧阳克';
    $subject = '11112222333344445555666677778888999900000
        aaabbbcccdddeeefffggghhhiiijjjjkkkk
        llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx   ouyangke ouyangke ouyangke zhulaoshi zhulaoshi zhulaoshi ximen ximen ximen ';
    $a = preg_filter($pattem, $replacement, $subject);
    var_dump($a);

示例2:

    $pattem = array('/ouyangke/','/ximen/');
    $replacement = array('欧阳克','西门大官人');
    $subject = array(
        '11112222333344445555666677778888999900000
        aaabbbcccdddeeefffggghhhiiijjjjkkkk
        llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke ',
        'ouyangke ouyangke ouyangke zhulaoshizhulaoshi zhulaoshi ximen ximen ximen '
    );
    $a = preg_filter($pattem, $replacement, $subject);
    var_dump($a);

5. preg_quote 转义正则表达式字符

参数 描述
str 必需。要转义的字符串。

示例:

    $subject = '^ouyangke$zhulaoshi=miejue!\ximen&[] ';
    $a = preg_quote($subject);
    var_dump($a);

6. preg_grep 返回匹配模式的数组条目

参数 描述
pattern 必需。要搜索的模式,可以使一个字符串。(正则表达式)
input 必需。输入数组

示例:

    $pattem = '/^(\d+)?\.\d+$/';
    $array = array(1, 2, 3.4, 53, 7.9);
    $a = preg_grep($pattem,$array);
    var_dump($a);

7. preg_split 通过一个正则表达式分隔字符串

参数 描述
pattern 必需。要搜索的模式,可以使一个字符串。(正则表达式)
subject 必需。被查询的字符串
limit 可选。分隔得到的子串最多只有limit个。默认是 -1(无限)

示例:

    $pattem = '/[\s,]+/';
    $subject = 'ouyangke ouyangke zhulaoshi zhulaoshi ximen ximen';
    $a = preg_split($pattem,$subject);
    var_dump($a);