我正在尝试使用 php 的preg-match-all
函数拆分一些 html 内容:
<li class="cat-item"><a title="blabla" href="#">parent 1</a>
<ul class="children">
<li class="cat-item"><a title="" href="#">child 1</a></li>
</ul>
</li>
<li class="cat-item cat-item-4"><a title="blabla" href="#">father 2</a>
<ul class="children">
<li class="cat-item"><a title="" href="#">child 1</a></li>
<li class="cat-item"><a title="bla" href="#">child 2</a></li>
</ul>
</li>
例如,我希望能够更改链接描述;
<a title="" href="#">child 1</a>
至
<a title="" href="#">I changed that</a>
同时保持原始html的结构。到目前为止,我成功地使用以下方法拆分链接:
$results = preg_match_all('/<a\s[^>]*href\s*=\s*(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>/siU', $html, $tokens);
foreach ( $tokens[0] as $category)
{
echo $category.'<br>';
}
这样做的缺点是它会丢弃子列表,并输出同一级别的所有列表项;没有父母和孩子的区别。
有什么想法可以保持原有的层次结构吗?
谢谢 :)