2011-07-04 75 views
2

我要做到以下几点:的preg_replace() - 除去包含HTML标签内的字符串

我有一个数据库中的字符串,它是存储HTML标记插入那里的时候,因此,例如,我可能有以下字符串:

 <h2>Hello World</h2> 
    <p>Cras mattis justo vitae diam sagittis ut porta eros aliquam. 
     Aenean vel nisi et nisl adipiscing blandit. 
     Donec tempor dictum risus a feugiat. 
     Nunc ac purus lectus. Morbi in suscipit ipsum. 
     Ut eu odio eu massa sollicitudin interdum. 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
     Maecenas fermentum hendrerit imperdiet.</p> 

这是一个字符串,我可能会在数据库中,我要放弃它的<h2>部分。

现在,据我所知,在这里做一个preg_replace()可以完成这项工作,但是我需要寻找哪种字符串模式?

非常感谢。

+0

解析可能会更好,然后替换:http://simplehtmldom.sourceforge.net/ – jantimon

+0

如果你的HTML是比较简单的,正则表达式也许能够应付它。对于一般的HTML,尽管你应该看看使用解析器而不是正则表达式来处理它:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – tvanfosson

+0

不要使用simplehtmldom – dynamic

回答

1

要真正回答你的问题的替代方法正则表达式是:

/<h2>(.+?)<\/h2>/ 

然而,正如评论指出,这是不是最好的方法! :)

1

尼斯通过迈克尔赖特

使用strip_tags()函数解决此问题的另一种方法。

$patern = '<p>'; 
    $str = '<h2>Hello World</h2><p>Cras mattis justo vitae diam .</p>'; 
    strip_tags($str,$patern); 

此代码生成以下

pattrn
'Hello World<p>Cras mattis justo vitae diam .</p>' 

这里$包含的标签列表仍然留在你的数据。 strip_tags()消除了除了$ patern之外的所有标签。

reference from php manual

相关问题