2012-02-23 12 views
0

でWebページから特定のコンテンツを取得し、私は<div id="some-content"></div>するpreg_match

preg_match("/<div id=\'some-content\'>(.*)<\/div>/m", file_get_contents('www.xxx.com'), $output); 
print_r ($output); 

にである、特定のウェブページの一部から(すべてのCSSで、作業などにリンク)コンテンツを取得したい。しかし、それは空の配列を返します。 Array ()

どうしたのですか? preg_matchまたはウェブページで問題がありますか?

+0

実際にxxx.com(ポルノサイトbtw)で作業したい場合、単純な答えはid "some-content"を持つdivがないことです。したがって、空の配列が得られます。例として、URLをexample.com(URLの例の公式URL)に変更することをお勧めします。それでも、その答えはそのようなdivがないか、その正確な構文では起こりません。 HTML Parserを使用してHTMLをより確実にスクラップすることができます。 http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-with-php – Gordon

+0

可能なすべての内容を正しく説明する方法はありません。たとえば、HTMLパーサーを使用する必要があります。 [PHP FAQ](http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-with-php) – scibuff

答えて

3

DOMパーサーを使用します。無限の時間正規表現はHTMLを解析するのに十分強力ではないと言われています。

phpのbuilt in DOMパーサー。 ThisはphpのためのまともなDOMパーサーです。 SO Legendary Catalogのthisスレッドを必ず読んでください。

+1

これは質問に答えません。 DOMパーサの使用を提案するだけの場合は、それをコメントとして提供し、OPをcanonicalにhttp://stackoverflow.com/questions/3577641/how-to-parse-and-process-html- with-phpあり – Gordon

+0

サイドノートでは、PHPのPCRE RegexはHTMLを非常に扱うことができます。これは通常、言語ではなく、むしろ仕事に就いていない開発者です。誰もがリンクしているので、 "その答え"は間違っています。 – Gordon