使用str_replace删除不必要的标记

时间:2013-09-14 22:27:33

标签: php string replace

假设我有一些$content喜欢这个

<div class="span2">
    <p><br />
        Here goes some other content …<br />
        More content …
    <br /></p>
</div>

我只想在打开<br />代码后和结束<p>代码之前删除<p>代码。

这是我到目前为止所做的,但它不起作用......

preg_replace('/<div[^>]><p><br />(.+)<br /><\/p><\/div>/i', '$1', $content);

3 个答案:

答案 0 :(得分:0)

preg_replace('/<div[^>]*><p><br\s\/>(.+)<br\s/><\/p><\/div>/i', '$1', $content);

我不是一个php程序员,但也许这个regexp-part现在是正确的。

答案 1 :(得分:0)

您不会使用http://php.net/manual/en/function.strip-tags.php的任何理由?您可以指定单独保留<p><div>个标记。只有在你的情况总是如此简单的情况下才有效。如果你想让任何<br />单独留在中间,那么这可能并不理想。

答案 2 :(得分:0)

这对你有用吗?

function strpbrp($content){
  if(preg_match('/<div[^>]*>/', $content, $m)){
    return "$m[0]<p>".preg_replace('/(^<div[^>]*>\s*<p>\s*<br\s*\/>)|(<br\s*\/>\s*<\/p>\s*<\/div>$)/', '', $content).'</p></div>';
  }
  else{
    return $content;
  }
}