对于所有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 );