0

假设我有一些$content这样的

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

我只想从中删除<br />开始标签之后<p>和结束标签之前的<p>标签。

这是我到目前为止所拥有的,但它不起作用......</p>

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

3 回答 3

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

我不是 php 程序员,但也许这个正则表达式部分现在是正确的。

于 2013-09-14T22:33:39.727 回答
0

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

于 2013-09-14T22:35:02.277 回答
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;
  }
}
于 2013-09-14T23:05:53.417 回答