如何在 PHP 中定位 HTML 字符串中的特定段落


How to target specific paragraphs within an HTML string in PHP

对于所有PHP人来说都是一个简单的。我有一个表示HTML一部分的字符串。它看起来像这样:

<p>blablabla.....</p>
<p>blablabla.....</p>
<p>blablabla.....</p>
<p>blablabla.....</p>
<h3>hello</h3>
<p>blablabla.....</p>
<p>blablabla.....</p> etc etc

我想做的是遍历对每个节点应用类的节点,直到我点击 h3。

谢谢

编辑到目前为止,我已经尝试过:

$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml); 
foreach ($dochtml->childNodes as $node)
{
    if($node->tagName == "p") {
    $node->setAttribute('class', 'someclass');
    } else {
    break;
}
}

这根本行不通。

HTML 片段来自数据库,表示 CMS 中页面的可编辑部分。

尝试:

$html = '<xml><p>blablabla.....</p>
         <p>blablabla.....</p>
         <p>blablabla.....</p>
         <p>blablabla.....</p>
         <h3>hello</h3>
         <p>blablabla.....</p>
         <p>blablabla.....</p></xml>';
$xml = new SimpleXMLElement($html);
foreach ($xml as $key => $value) {
    if ( $key == 'h3' ) {
        var_dump($value);
        break;
    }
}

请注意,我添加了<xml>标签,因为应该有一些包含其他项目的根元素。

嗯:

<?php
$string = explode( '<h3>', $string );
$string[0] = str_replace( '<p>', '<p class="foo">', $string[0] );
$string = implode( '<h3>', $string );