1

preg-match-allphpの関数を使用していくつかの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>';
}

これの欠点は、子リストを破棄し、すべてのリスト項目を同じレベルで出力することです。親と子の区別はありません。

元の階層を維持するためのアイデアはありますか?

ありがとう:)

4

1 に答える 1

0

preg_replaceを使用して文字列を置き換えます!ここのようなもの:

$output = preg_replace("/^([123]0|[012][1-9]|31)(\\.|-|\/|,)(0[1-9]|1[012])(\\.|-|\/)(19[0-9]{2}|2[0-9]{3})$/","$1",$in_nn_date);

ここで、$1または$2は、正規表現で検索してグループ化したものです。

オンラインエディタか何かを使用するのが最善でしょう...このようなもの

そしてそこで試してみてください!それが役に立てば幸い...

于 2011-01-27T00:02:18.827 に答える