在网上找半天没有找到
技术有限确实对正则表达式不熟悉
所以求各位大虾帮帮忙!
下面是我找到的js版本的跪求PHP版本!!<script>
function pregstr(){
/* 第一步 提取内容部分 */
var reg=/[\s\S]*?<td\sclass=f>((?:(?!<\/td>)[\s\S])+)<\/td>(?:(?!<td\sclass=f>)[\s\S])+/gi;
var txt=document.getElementById("txt").value;
var str=txt.replace(reg,"$1★<br>");/* 第二步 去掉除<br>外的所有标签 */
var reg2=/<\/?(?:(?!br|>)[\s\S])+[^>]*>/ig;
str=str.replace(reg2,"");/* 第三步 去掉后面有"百度快照"等字眼的部分*/
var reg3=/(?:<br>(?:(?!<br>).)*){2}★/ig;
str=str.replace(reg3,"<br />"); document.getElementById("show").innerHTML=str;
}
</script>

解决方案 »

  1.   

    例子:
    $str = '需要替换的字符串。';
    $reg = '/[\s\S]*?<td\sclass=f>((?:(?!<\/td>)[\s\S])+)<\/td>(?:(?!<td\sclass=f>)[\s\S])+/gi';
    $sub = '$1★<br>';echo preg_replace($reg,$sub,$str);  //输出结果
      

  2.   

    <?php
    $str = file_get_contents("http://www.baidu.com/s?wd=google&ch=&tn=360se_dg&bar=");
    $reg="/[\s\S]*?<td\sclass=f>((?:(?!<\/td>)[\s\S])+)<\/td>(?:(?!<td\sclass=f>)[\s\S])+/i";
    preg_match($reg,$str,$match);
    //echo htmlspecialchars($match[0]);
    $reg2="/<\/?(?:(?!br|>)[\s\S])+[^>]*>/i";
    $text = preg_replace($reg2,"",$match[0]);
    $reg3="/(?:<br>(?:(?!<br>).)*){2}★/i";
    $text = preg_replace($reg2,"<br />",$text);
    echo $text;
    ?> 
    大概思路是这样 如果你的正则没错的话 其中$match为数组 可以遍历后处理
      

  3.   

    3楼的正确
    原来Js和php正则表达式是一样的
    不过写错了一点
    <?php
    $str = file_get_contents("http://www.baidu.com/s?wd=google&ch=&tn=360se_dg&bar=");
    $reg="/[\s\S]*?<td\sclass=f>((?:(?!<\/td>)[\s\S])+)<\/td>(?:(?!<td\sclass=f>)[\s\S])+/i";
    preg_match($reg,$str,$match);
    //echo htmlspecialchars($match[0]);
    $reg2="/<\/?(?:(?!br|>)[\s\S])+[^>]*>/i";
    $text = preg_replace($reg2,"",$match[0]);
    $reg3="/(?:<br>(?:(?!<br>).)*){2}★/i";
    $text = preg_replace($reg3,"<br />",$text);
    echo $text;
    ?>