【发布时间】:2010-12-25 21:01:19
【问题描述】:
我需要以一种很好的正确方式解析字符串中的 HTML 代码。
Wordpress 创建一个侧边栏,其结构如下所示。
<div class="sidebar-1">
<ul>
<li id="archives">
<h4>Archives</h4>
<ul>
<li>a href="">Test1</a></li>
<li>a href="">Test2</a></li>
</ul>
</li>
<li id="pages">
<h4>Archives</h4>
<ul>
<li>a href="">Test</a></li>
<li>a href="">Test</a></li>
</ul>
</li>
</ul>
我想在 之后创建一个 并在 父元素之前创建一个 ,在列表部分“档案”和“页面”中”。如果添加更多未知列表项,它应该可以工作。
结果应该是这样的:
<div class="sidebar-1">
<ul>
<li id="archives">
<h4>Archives</h4>
<div class="content">
<ul>
<li>a href="">Test1</a></li>
<li>a href="">Test2</a></li>
</ul>
</div>
</li>
<li id="pages">
<h4>Archives</h4>
<div class="content">
<ul>
<li>a href="">Test</a></li>
<li>a href="">Test</a></li>
</ul>
</div>
</li>
</ul>
我试图创建一个 DOM 函数,但我没有弄清楚需要做什么以及如何去做。它返回数组中 h4-tags 中的内容。不是很有帮助。
function add_sidebar_content($html)
{
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DomXPath($dom);
$tag = $dom->getElementsByTagName("h4");
$counter = $tag->length;
for ($i = 0; $i < $counter; $i++)
{
$result = $tag->item($i)->nodeValue;
}
return $result;
}
【问题讨论】:
-
好问题,+1。请参阅我的答案以获取解释以及托管 XPath 的语言是 XSLT 的解决方案。
-
嗯,自从我从事 WP 工作以来已经有一段时间了,但这不是主题相关的问题吗?
-
是的,这是一个主题相关的问题,但是 Wordpress 主题系统非常灵活,并且接受 PHP 函数来解决问题。