-2

echo最後の5つのdivにphpを使用するにはどうすればよいですか?

たとえば、次の文字列です。

<div style='df">cool</div><div>cooletre</div><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div>

どうすればいいですか?domparser、正規表現、または何を使用しますか?

これを達成するためにこれを変更できますか?ここのコードは最初の 5 つをフェッチしますが、最後の5 つをフェッチしたいと思います。

$string = '<div class="div">1</div><div class="div">2</div><div class="div">3</div><div class="div">4</div><div class="div">5</div><div class="div">end!</div>';

$dom = new DOMDocument();
$new_dom = new DOMDocument;
$dom->loadHTML($string);

$count = 0;
foreach ($dom->getElementsByTagName('div') as $node)
{
    $new_dom->appendChild($new_dom->importNode($node, TRUE));
    if (++$count >= 5)
        break;
}

echo $new_dom->saveHTML();
4

2 に答える 2

2

divすべての開始タグをカウントするのは、あまりスマートではない方法です。n を取得するとします。n-5 番目のdivタグを見つけ、そこから 5 番目の終了divタグを見つけます。間にあるものはすべてあなたが探しているものです。

開始タグの数は次のdivように取得できます。

$num_div_tags = count(explode('<div', strtolower($string))) - 1;

そこから、最後から 5 番目のdivタグを見つけるのはかなり簡単です。

このソリューションのエレガンスは、PHP のエレガンスに完全に適合します。


divこのソリューションに満足できない場合は、文字列 char を char ごとに繰り返し処理し、開始タグと終了タグを検出し、各ペアを長さ 5 の循環リストに保存して出力 する単純な有限状態マシンを考え出すこともできます。文字列の最後に到達すると、すべてのリスト要素。

于 2013-01-30T21:26:08.993 に答える
0

xpathはどうですか?

$xpath = new DOMXPath($dom);
foreach($xpath->query('//div[position()>last()-5]') as $div){
  echo $dom->saveHTML($div);
}
于 2013-01-31T02:18:37.413 に答える