2

私は助けの吸血鬼になりたくありません。これをコーディングする必要はありません。私は主に、これを可能にすることができることを知りたいです。

文字列の最初の 5 つの div をエコーするにはどうすればよいですか? 「file_get_contents」を使用して取得し、文字列に入れて解析し、エコーします。どのように解析しますか?正規表現?いくつかのdomパーサー?

この文字列のように:

<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>

どうもありがとう、乾杯

4

5 に答える 5

1

これを試して:

  • root-Element を追加して入力データを有効な XML にし、
    libxml (DOM、simplexml など) を使用することができます。ただし、入力データは有効な xml データでなければなりません (サンプル データは有効に見えますが、ルート要素のみが必要です)。
  • ><as pattern と substr よりもstrpos を使用します。これはより速い方法です

更新: strpos と substr を使用したサンプル コード:

$data = '<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>';
$pos = 0;
for($i=0; $i<5; $i++) {
    $pos = strpos($data, '><', $pos+2);
}
echo substr($data, $pos+1);
于 2012-12-29T00:08:23.587 に答える
0

PHP に固執したい場合は、おそらくstrpossubstrが最適な方法です。

于 2012-12-29T00:05:06.840 に答える
0

div のコンテンツに部分文字列「div」またはその他の要素を含めることができる場合は、何らかのパーサーを使用することをお勧めします。phpQueryをお勧めします。jQueryのようにシンプルですが、php 用です。

コードは次のようになります。

echo pq('div:lt(5)', $string)->html()
于 2012-12-29T00:10:19.700 に答える
0
$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();

jQuery またはサードパーティ ライブラリを使用する代わりに、PHP のDOMDocumentクラスを使用できます。

于 2012-12-29T00:14:03.910 に答える
-1

jqueryスライス

$(".topics .topic").slice(5).hide();

http://api.jquery.com/slice/

于 2012-12-29T00:15:03.653 に答える