1
我试图使用PHP的preg-match-all
功能分割一些HTML内容:PHP preg_match_all:分裂列表项和子列出
<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>';
}
这样做的缺点是它丢弃的孩子名单,并输出在同级别的所有列表项;父母和孩子之间没有区别。
任何想法保持原有的层次?
thanx :)
这是一个正则表达式要做的非常辛苦的工作,在这种情况下用HTML解析器会更好(我非常赞成正则表达式,并且通常会打他们的角落,但是在这种类型中的筑巢,这是一场艰苦的斗争)。你想把什么东西放到锚上? – Orbling 2011-01-27 00:02:50
thanx Orbling,我同意正则表达式是不正确的方式去解析HTML时,我开始玩domDocument,但没有得到我的观点迄今.. 我想实现的是与WordPress的wp_list_categories()函数;我需要翻译回应的结果;这个函数没有数组或对象的返回值,但只有回声:(所以我尝试创建一个dirthy修复:) :) – numediaweb 2011-01-27 01:02:17