使用正则表达式从html中排除标题

时间:2013-11-06 18:53:16

标签: php regex

我正在获取页面HTML代码。

我可以删除所有的html标签和脚本。还想删除<title> whatever here </html>

在SO上测试了所有解决方案。没有帮助

这里有什么问题?

function plaintext($html)
    {
        $plaintext = preg_replace('#([<]title)(.*)([<]/title[>])#', ' ', $html);


            //$plaintext = preg_match('#<title>(.*?)</title>#', $html);

        // remove comments and any content found in the the comment area (strip_tags only removes the actual tags).
        $plaintext = preg_replace('#<!--.*?-->#s', '', $plaintext);

        // put a space between list items (strip_tags just removes the tags).
            $plaintext = preg_replace('#</li>#', ' </li>', $plaintext);     

            // remove all script and style tags
        $plaintext = preg_replace('#<(script|style)\b[^>]*>(.*?)</(script|style)>#is', "", $plaintext);

        // remove br tags (missed by strip_tags)
            $plaintext = preg_replace("#<br[^>]*?>#", " ", $plaintext);

            // remove all remaining html
            $plaintext = strip_tags($plaintext);

        return $plaintext;
    }

2 个答案:

答案 0 :(得分:0)

你的代码看起来很好。我的意思是,使用你的功能..

function plaintext($html)
{
    $plaintext = preg_replace('#([<]title)(.*)([<]/title[>])#', ' ', $html);

    return $plaintext;
}
$page = file_get_contents('http://www.example.com');
echo plaintext($page);  

没有标题标签......

答案 1 :(得分:0)

尝试:

preg_replace('/<title\b[^>]*>(.*?)</title>/i','',$html);