比如1.HTML文件如下<html>
<head>
<style type="text/css">
*{
margin:0;
padding:0;
}
body{
font-size:13px;
}
#nav{
margin:100px;
}
#nav li{
float:left;
list-style:none;
}
#nav li a{
padding:10px 20px;
display:block;
color:#000;
font-size:14px;
font-family:"微软雅黑";
}
</style>
<title>这是标题~....</title>
</head>
<body>
<ul id="nav">
<li><a href="http://www.baidu.com">百度</a></li>
<li><a href="http://www.baidu.com">谷歌</a></li>
<li><a href="http://www.yahu.com">雅虎</a></li>
<li><a href="http://www.biing.com">必应</a></li>
</ul>
</body>
</html>我现在想要匹配所有的CSS内容跟<li></li>之间的内容,其他内容不需要,

解决方案 »

  1.   

    css/<style type="text\/css">(.[^<]*)<\/style>/isli/<li(.[^>]*)>(.[^<]*)<\/li>/is
      

  2.   

    css的在那个页里面说过了
    <li>的:
    $str=<<<eof
    <body>
    <ul id="nav">
    <li><a href="http://www.baidu.com">百度</a></li>
    <li><a href="http://www.baidu.com">谷歌</a></li>
    <li><a href="http://www.yahu.com">雅虎</a></li>
    <li><a href="http://www.biing.com">必应</a></li>
    </ul>
    </body>
    eof;
    preg_match_all('/<li[^>]*>(.*?)<\/li>/is',$str,$arr);
    echo '<pre />';
    print_r($arr);
      

  3.   


    header('content-type:text/html;charset=utf8');
    $str = <<<longstr
    <html>
    <head>
    <style type="text/css">
    *{
        margin:0;
        padding:0;
    }
    body{
        font-size:13px;
    }
    #nav{
        margin:100px;
    }
    #nav li{
        float:left;
        list-style:none;
    }
    #nav li a{
        padding:10px 20px;
        display:block;
        color:#000;
        font-size:14px;
        font-family:"微软雅黑";
    }
    </style>
    <title>这是标题~....</title>
    </head>
    <body>
    <ul id="nav">
    <li><a href="http://www.baidu.com">百度</a></li>
    <li><a href="http://www.baidu.com">谷歌</a></li>
    <li><a href="http://www.yahu.com">雅虎</a></li>
    <li><a href="http://www.biing.com">必应</a></li>
    </ul>
    </body>
    </html>
    longstr;
    //匹配所有的样式表
    preg_match('/<style\s+type="text\/css">(.*?)<\/style>/is',$str,$arr);
    print_r($arr[1]);
    preg_match('/<li>(.*)<\/li>/is',$str,$arrs);
    print_r($arrs[1]);
      

  4.   


            $str = file_get_contents('test.html');

    $pegCss = '/<\s*style\s*type=\"text\/css\"\s*>([^<]+)<\s*\/\s*style\s*>/i';

    if (preg_match($pegCss,$str,$arr_match)) {
       
       echo $arr_match[1];
      
    }

    $pegli = '/<li>.+<\s*\/\s*li\s*>/i';

    if (preg_match_all($pegli,$str,$arr_match)) {
       print_r($arr_match[0]);
    }
      

  5.   

    <?php
    header("Content-type:text/html;charset=gb2312"); 
    $str = <<<html
    <html>
    <head>
    <style type="text/css">
    *{
        margin:0;
        padding:0;
    }
    body{
        font-size:13px;
    }
    #nav{
        margin:100px;
    }
    #nav li{
        float:left;
        list-style:none;
    }
    #nav li a{
        padding:10px 20px;
        display:block;
        color:#000;
        font-size:14px;
        font-family:"微软雅黑";
    }
    </style>
    <title>这是标题~....</title>
    </head>
    <body>
    <ul id="nav">
    <li><a href="http://www.baidu.com">百度</a></li>
    <li><a href="http://www.baidu.com">谷歌</a></li>
    <li><a href="http://www.yahu.com">雅虎</a></li>
    <li><a href="http://www.biing.com">必应</a></li>
    </ul>
    </body>
    </html>
    html;
    $reg1="/<style[^>]*>(.*?)<\/style>/is"; //匹配CSS的正则表达式
    if(preg_match_all($reg1,$str,$arr))
    {
    echo "CSS部分:<br/>".$arr[1][0]."<br/>";
    }
    $reg2="/<li>(.*?)<\/li>/is";//匹配li的正则表达式
    if(preg_match_all($reg2,$str,$arr))
    {
    foreach($arr[1] as $a)
    {
    echo "LI内容为:<br/><xmp>".$a."</xmp><br/>";
    }
    }
    ?>