<tr>
                  <td height="28">条 形 码:</td>
                  <td>640183</td>
                </tr>
                <tr>
                  <td height="28">所属品牌:</td>
                  <td><a href="list-product.html?brand=10130">Guerlain 娇兰</a> >> <a href="list-product-988.html?brand=10130">香水系列</a></td>
                </tr>
以上一段HTML.要求正则提取出 里面条形码对应的值"640183"  以及 所属品牌里面 对应的  "Guerlain 娇兰"我是分开来匹配的。条形码是这样匹配的
preg_match('/<td height="28">\s*条 形 码:<\/td>\s*<td>(.*?)\s*<\/td>/is',$file,$tiaoxingma);
但是感觉效率不高。有更好的写法吗。呵呵

解决方案 »

  1.   

    不知道写的对不对。<td height="28">(.*)+</td>\s+<td>((.*)+)</td>
      

  2.   

    $str = <<<HTML
                   <tr>
                      <td height="28">条 形 码:</td>
                      <td>640183</td>
                    </tr>
                    <tr>
                      <td height="28">所属品牌:</td>
                      <td><a href="list-product.html?brand=10130">Guerlain 娇兰</a> >> <a href="list-product-988.html?brand=10130">香水系列</a></td>
                    </tr>
                   <tr>
                      <td height="28">条 形 码:</td>
                      <td>640183</td>
                    </tr>
                    <tr>
                      <td height="28">所属品牌:</td>
                      <td><a href="list-product.html?brand=10130">abcd sssd</a> >> <a href="list-product-988.html?brand=10130">香水系列</a></td>
                    </tr>                                
    HTML;preg_match_all('/640183#匹配数字#
    .+?#非贪婪匹配到第一个<a#
    <a.*?#非贪婪匹配剩余a标签内的东西#
    > (.+?) #匹配分类名#
    <\/a>/sx', $str, $matches);
    echo '<pre>';
    print_r($matches[1]);
    echo '</pre>';
    /*
     * Array
    (
        [0] => Guerlain 娇兰
        [1] => Guerlain sssd
    )
     */
      

  3.   

     preg_match('/条 形 码.+<td>(.*)<\/td>/isU',$file,$tiaoxingma);
    echo $tiaoxingma[1];   //条形码 preg_match('/<a[^>]*>(.*)<\/a>/isU',$file,$pinpai);
    echo $pinpai[1];  //品牌
      

  4.   

    preg_match('/条 形 码.+<td>(.*)<\/td>/isU',$file,$tiaoxingma);
    echo $tiaoxingma[1]; //条形码
    这个是不对的。呵呵