preg-match-all
phpの関数を使用していくつかの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>';
}
これの欠点は、子リストを破棄し、すべてのリスト項目を同じレベルで出力することです。親と子の区別はありません。
元の階層を維持するためのアイデアはありますか?
ありがとう:)