-1

重複の可能性:
PHPでHTMLを解析および処理する方法は?

私はphpを初めて使用し、検索と検索を理解しようとしています。ここでAmazonのトップセラーリストからDiablo3のランクを抽出したいとします。そこで、文字列「Diablo III」などを検索して、次のブロックを見つけることができます(フォーマットについては申し訳ありません)。

 http://www.amazon.com/Diablo-III-Standard-Edition-Pc/dp/B00178630A/ref=zg_bs_4924894011_1
 "><img src="http://ecx.images-amazon.com/images/I/41kXCp%2BUyeL._SL160_SL160_.jpg" alt="Diablo III: Standard Edition" title="Diablo III: Standard Edition" onload="if (typeof      uet == 'function') { uet('af'); }"/></a></div></div><div class="zg_itemRightDiv_normal"><div class="zg_rankLine"><span class="zg_rankNumber">1.</span><span class="zg_rankMeta"></span></div><div class="zg_title"><a  href="

 http://www.amazon.com/Diablo-III-Standard-Edition-Pc/dp/B00178630A/ref=zg_bs_4924894011_1
 ">Diablo III: Standard Edition</a></div><div class="zg_byline">by Blizzard Entertainment

ここで、このパートで定義され、<span class="zg_rankNumber">1.</span>現在1であるランクを抽出してみます。

誰かがその数を抽出するための最良の方法についてアドバイスしてもらえますか?それにより、2番目、3番目、またはその他の場所(20まで)に落ちても、私はそれを抽出できますか?

preg_matchとregexを少し調べましたが、使用法を完全に理解できませんでした。

4

2 に答える 2

1
preg_match_all( '/<span class=\"zg_rankNumber\">(.*?)<\/span>/is',  $string, $matches );
print_r($matches)

正確なコードを書くには数時間かかります..しかし、私はあなたにロジックを伝えることができます.

  1. html からすべての "" を抽出し、配列に格納します。
  2. 配列をループして、タイトルを確認します。
  3. タイトルが見つかった場合は、その配列要素からランクを抽出します
于 2012-06-11T20:01:09.753 に答える
1

シンプルな dom html パーサーを使い始めることができ ます。

<span class="zg_rankNumber">

次のようにすることができます: ($str にはhtmlデータが含まれます)

$html = str_get_html($str);
echo $html->find("span[class='zg_rankNumber']",0)->innertext;

編集:

ゲームの特定のランク(Diablo III)を取得したい場合は、フォーマットに基づいて次のように呼び出します。

echo $html->find("img[title^='Diablo III']",0)->find("span[class='zg_rankNumber']",0)->innertext;
于 2012-06-11T20:06:08.480 に答える