2017-04-17 12 views
1

PHPと単純なHTML DOMパーサーを使用して、ウェブサイトから歌詞を取得しようとしています。歌詞の歌詞は、 "歌詞"のクラスでdivに保持されています。ここに私がdivをつかんで表示するために使用しているコードがあります。現在のところ、私のWebページには "Array"しか返されません。配列をjsonifyすると、配列が空であることがわかります。PHPの単純なHTML DOMパーサが配列としてdivを返す

<?php 
include('simple_html_dom.php'); 
$data = file_get_contents("https://example.com/songlyrics"); 
$html = str_get_html($data); 
$lyr = $html->find('div.lyrics'); 
echo $lyr; 
?> 

は、私はシンプルなHTML DOMパーサが正しく含まれていることを知っている、と私は何の問題私は、コードにいくつかの小さな変更で$ htmlのエコーしかし私はエコーように見えることはできません、完全なWebページを表示していませんこのdivだけ。私のコードに何か問題がありますか? $ lyrが配列を返すのはなぜですか?

+0

ほとんどの場合、クラスのコレクションは、最初の要素を指します。 ' - > find( 'div.lyrics、0')'、2番目の引数を気にしてから、 'echo' – Ghost

+0

@Ghostに感謝します。 –

答えて

1

あなたのコードに問題はありません。

なぜ$ lyrは配列を返すのですか?

これは、クラスが複数回使用されているとみなされるためです。 var_dump($lyr)の代わりに、そのクラス名で見つかったすべてのdiv要素が表示されます。

echo $lyr[0]または$html->find('div.lyrics',0)のいずれかを使用して、特定のdiv要素を選択することができます。

+0

var_dumpは今後役立ちます。私はあまりにもPHPに精通していないので、私は少し時間を節約しています。コメントGhostはすでに私の問題を解決したままにしていますが、これは答えなので正しいとマークします。 –

+0

これはそれほどのことではありません。 'find'は、2番目の引数を使わない限り、常に配列を返します。あなたが慣れなければならない混乱することです。また、var_dumpを使わないでください。あなたがそれを試してみるとどうでしょうか? – pguardiario

+0

@pguardiario情報をありがとう。私は今なぜvar_dumpを使うべきではないのか分かります。 –

関連する問題