-1

一个适合所有 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 中页面的可编辑部分。

4

2 回答 2

0

尝试:

$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>标签,因为应该有一些包含其他项目的根元素。

于 2013-01-31T15:46:52.600 回答
-1

好:

<?php

$string = explode( '<h3>', $string );
$string[0] = str_replace( '<p>', '<p class="foo">', $string[0] );
$string = implode( '<h3>', $string );
于 2013-01-31T15:47:57.880 回答