php 正则匹配html标签

$html = '               <a id="01" name="xkmlChoose">哲学</a>
                        <a id="02" name="xkmlChoose">经济学</a>
                        <a id="03" name="xkmlChoose">法学</a>
                        <a id="04" name="xkmlChoose">教育学</a>
                        <a id="05" name="xkmlChoose">文学</a>
                        <a id="06" name="xkmlChoose">历史学</a>
                        <a id="07" name="xkmlChoose">理学</a>
                        <a id="08" name="xkmlChoose">工学</a>
                        <a id="09" name="xkmlChoose">农学</a>
                        <a id="10" name="xkmlChoose">医学</a>
                        <a id="12" name="xkmlChoose">管理学</a>
                        <a id="13" name="xkmlChoose">艺术学</a>';
$pattern = '/<a.*?id=\"(.*?)\".*?name=\"xkmlChoose\".*?>(\S*?)<\/a>/';
preg_match_all($pattern, $html, $matches);
var_dump($matches[2]);
$pattern1 = '/<div.*?class=\"liL\".*?id=\"(.*?)\">(\S*?)\(.*?\)/';
preg_match_all($pattern1, $arrSpecial, $matches2);
//var_dump($matches2[1]);

$pattern2 = '/.*?target=\"_blank\".*?id=\"(.*?)\".*?style=\"display: inline;\">(\S*?)<\/a><\/li>/';
preg_match_all($pattern2, $arrSpecial, $matches3);

正则表达式的贪婪模式与非贪婪模式

  1. 什么是正则表达式的贪婪与非贪婪匹配

    $str = ="abcaxc";
    $pattern = '\ab.*c\'

      贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c)。

      非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab.*c)。

  2. 编程中如何区分两种模式

      默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。

      量词:{m,n}:m到n个

         *:任意多个

         +:一个到多个

         ?:0或一个

猜你喜欢

转载自blog.csdn.net/zf766045962/article/details/81989396