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