删除PHP中的某些HTML标记以外的所有内容

时间:2014-02-25 04:47:59

标签: php html

我正在使用PHP中的一些HTML,每当我尝试使用HTML / XML解析器时,它都会返回荒谬的大型复杂对象/数组。有时它甚至不会这样做,因为我正在使用的HTML有时偶尔会在某些地方被错误格式化,但它在对我来说不重要的地方会被错误格式化。因此,我刚刚决定在代码上使用一些字符串函数,这很好。

除此之外,这就是我需要的。这是我的HTML:

<section id="whatever">
  <article>
    <h1>Title</h1>
    <p>The quick brown fox jumped over the lazy dog.</p>
  </article>
  <article>
    <h1>Another itle</h1>
    <p>Lorem ipsum dolor sit amet consectetuer adipiscing elit.</p>
  </article>
</section>

我想删除所有不是p标记的内容,所以我希望最终值是这样的:

<p>The quick brown fox jumped over the lazy dog.</p>
<p>Lorem ipsum dolor sit amet consectetuer adipiscing elit.</p>

数据可以以任何方式返回,我不需要元素上的属性或类似的东西,我只需要标记的内容。

2 个答案:

答案 0 :(得分:1)

为什么不使用strip_tags

echo strip_tags($str, '<p>');

答案 1 :(得分:1)

您可以使用preg_match_all()

$html = '<section id="whatever">
  <article>
    <h1>Title</h1>
    <p>The quick brown fox jumped over the lazy dog.</p>
  </article>
  <article>
    <h1>Another itle</h1>
    <p>Lorem ipsum dolor sit amet consectetuer adipiscing elit.</p>
  </article>
</section>';

preg_match_all ('/<p.*?>(.*?)<\/p>/', $html, $result);

print_r ($result[0]);

/*
Array
(
    [0] => <p>The quick brown fox jumped over the lazy dog.</p>
    [1] => <p>Lorem ipsum dolor sit amet consectetuer adipiscing elit.</p>
)
*/