当前位置: 代码迷 >> PHP >> PHP采集只要文字,不要<p>标签,正则表达式该如何写
  详细解决方案

PHP采集只要文字,不要<p>标签,正则表达式该如何写

热度:446   发布时间:2012-09-18 16:21:42.0
PHP采集只要文字,不要<p>标签,正则表达式该怎么写
<font id="zx_article">
  到底内心要有多强大,才能在前一秒得知自己中了740多万元的彩票奖金,后一秒还能像没事人一样,淡定地和朋友相聚?彩民王先生用他的实际行动告诉大家,他就可以这么淡定,就连在领取奖金时,他还是一脸波澜不惊。
<p id=''>  &ldquo;你看,每期彩票开奖不都有不少人中奖吗?还有人中了上亿元的奖金呢,而且我觉得我迟早都会中一次大奖吧。&rdquo;、9月11日,这位内心强大,表现淡定的大奖得主王先生现身自治区福利彩票发行中心,他以11+2的复式投注,中得双色球2012105期一等奖705万余元、22万余元的二等奖,再加上若干小奖,奖金合计740.8985万元。</p>
<p id=''>  看上去年届不惑的王先生衣着考究,采访中,他的话语也不多,常会选择沉默凝视记者来回避他不想谈的话题,而更多时间,他看起来似乎有些心不在焉。</p>
<p id=''>  有着三年多彩龄的王先生自称来自青海,来乌市做生意三年了,不是铁杆彩民,只是不定期地购买彩票,平时选号全凭感觉。这次中奖是他在9月6日路过长江路一家投注站时选的号。当时,他选了11个号码,感觉这些号码都挺好的,因为难以取舍,就花了1848元钱以11+2的复式投注,&ldquo;这是我第四次花这么高的投注金额买一注彩票,因为当时感觉挺好&rdquo;。</p>
<p id=''>  次日晚上,王先生在宾馆接待远方来乌的朋友,闲暇时无意中上网,查询了开奖号码后再一一核对,这才发现自己中了一等奖,不过他并没有太过兴奋,而是继续和朋友叙旧。</p>
<p id=''>  &ldquo;我当时很高兴,心想第二天还有些要紧的事需要处理,赶快忙完这段时间,就去领奖。&rdquo;王先生说,他计划把这些奖金用于自己的生意。</p>
<p id=''>  王先生坦言,一直到领奖为止,他还没有把中奖的事告诉家人或朋友。&ldquo;等领到钱了再告诉他们,不然我这成了巨额财产来历不明了。&rdquo;王先生幽默地说。</p>
<p id=''>  最后,王先生为新疆福彩爱心工程基金捐款2万元。</p> </font>


只要<font>里的内容,不要<p>标签

------解决方案--------------------
最土的办法,整段采集完后,把<p id''>和</p>替换为空
------解决方案--------------------
试下这个函数,你可以自己修改下。
PHP code

function cleanJs($text){
    $text = trim($text);
    $text = stripslashes($text);
    //完全过滤动态代码
    $text = preg_replace('/<\?|\?'.'>/','',$text);
    //完全过滤js
    $text = preg_replace('/<script?.*\/script>/','',$text);
    //过滤多余html
    $text = preg_replace('/<\/?(html|head|meta|link|base|body|title|style|script|form|iframe|frame|frameset)[^><]*>/i','',$text);
    //过滤on事件lang js
    while(preg_match('/(<[^><]+)(lang|onfinish|onmouse|onexit|onerror|onclick|onkey|onload|onchange|onfocus|onblur)[^><]+/i',$text,$mat)){
        $text=str_replace($mat[0],$mat[1],$text);
    }
    while(preg_match('/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i',$text,$mat)){
        $text=str_replace($mat[0],$mat[1].$mat[3],$text);
    }
    return $text;
}