本帖最后由 cyhcyhhychyc 于 2013-03-23 22:55:22 编辑

解决方案 »

  1.   

    你的数据都是英文,正则本身不分什么编码。
    $str= <<<str
    <div class=\"bar\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target=\"_blank\" id=\"comment_name_460013413\" name=\"comment_name_460013413\" href=\"http:\/\/hz.iiiu.com\/red\/click.php?tp=1&cp=4003694&cpp=1000492&url=http:\/\/weibo.com\/2498716605\">lmlog_001<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a target=\"_blank\" class=\"s_ico\" href=\"http:\/\/hz.iiiu.com\/red\/click.php?tp=1&cp=4004584&cpp=1000492&url=http:\/\/weibo.com\/\">
    str;
    // 去掉这些多余的转义符,这也应该不是你原始的数据
    $str = stripslashes($str);
    $p = '#<.+class=\"bar\".*>.*<a.*>(.+)</a>#US';
    preg_match_all($p, $str, $result);
    var_dump($result[1]);
      

  2.   


    里面有“\u5728\u4f18\u9177\u4e0bc”类似这样的编码的。是一个js地址返回的。用一般的正则写法不能匹配这些字符的。
      

  3.   

    你原来多了一个stripslashes,我是直接去匹配的,反正总匹配不出来。
      

  4.   

    您用stripslashes把转义符去掉了,但是匹配出来的汉字变成了u4e2du534eu7259u818fu6ce1u6cabu591a,夹杂其它的字符那就还原不了,也不能正确显示了
      

  5.   

    // $str = stripslashes($str);
    $p = '#<.+class=\\\"bar\\\".*>.*<a.*>(.+)<\\\/a>#US';
    preg_match_all($p, $str, $result);
      

  6.   

    这个可以了,我其实写的和你几乎一样哈,但就是你写的是\\\"bar\\\",我写的是\\"bar\\",看来我是没有把双引号给转义了,因为我觉得把\转义后,\又把"转义了,都混在一起了,没有把这些字符都当成“普通”的纯“阅读性”的了