我有一个变量持有一些HTML。在html中,有几个p标签彼此相邻。我想从那些p标签中检索文本并将它们格式化为1段并将此新段落设置为新变量。这有意义吗?
<h2></h2>
<p>date</p>
<ul></ul>
<iframe></iframe>
<p>apple</p>
<p>banana</p>
<p>grape</p>
<ul></ul>
变为:
<p>apple banana grape</p>
注意:html中的元素可能会有所不同。例如没有iframe。某处的图像,等等。
答案 0 :(得分:2)
您可以使用Xpath执行此操作
$html = '<h2></h2>
<p>date</p>
<ul></ul>
<iframe></iframe>
<p>apple</p>
<p>banana</p>
<p>grape</p>
<ul></ul>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("//p");
foreach ($elements as $node){
echo $node->nodeValue. "<br/>";
}
答案 1 :(得分:1)
示例:
$html = '<h2></h2>
<p>date</p>
<ul></ul>
<iframe></iframe>
<p>apple</p>
<p>banana</p>
<p>grape</p>
<ul></ul>';
if (preg_match_all('~<p>(?P<paragraphs>.*?)</p>~is', $html, $matches)) {
print_r($matches['paragraphs']);
}
结果:
Array
(
[0] => date
[1] => apple
[2] => banana
[3] => grape
)
P.S。 “聪明”的downvoters你可以评论为什么你贬低? :))))))))))))))强>
P.P.S 投票的两位特别版:
$document = new DOMDocument();
$document->loadHTML($html);
$paragraphs = $document->getElementsByTagName('p');
$result = array();
foreach ($paragraphs as $paragraph) {
$result[] = $paragraph->nodeValue;
}
print_r($result);