0

私はこのhtmlを持っています: <h2><a href="http://.... > title</h2> 文字列 "href"を取得するにはどうすればよいですか?

私は試してみました:

include('simple_html_dom.php');
$html = file_get_html('http://...');

foreach($html->find('h2')->find('a') as $k) {
echo $k->href . '<br>';
}

エラー:非オブジェクトのメンバー関数find()を呼び出す

4

2 に答える 2

2

->find()2つの呼び出しを使用する代わりに、

foreach($html->find('h2 > a') as $k) {

私自身はSimpleDOMを使用したことがないので、セレクターが機能するかどうかはわかりません。そうでない場合は、試してください

foreach($html->find('a') as $k) {

結果を並べ替えます。

于 2011-12-31T18:18:06.577 に答える
0

私はPHPSimpleHTML DOMパーサーを使用していません...しかし、エラーは文字列を返し、htmlオブジェクトが渡されることを期待している返された文字列にfind関数を適用しているためである可能性があります...

前の解決策は間違っていますbczそれは検索関数がタグを検索している間に文字列を検索しただけです。

考えられる方法の1つは、私がコメントしたことです。最初の「h2」を削除してクレテリアを検索し、すべての「a」に適用します。

foreach($html->find('a') as $k) {
echo $k->href . '<br>';
}    

他の可能な解決策は、php inbuild file_get_contentsを使用し、正規表現で検索することです...私はあなたのためにそれを行いました...

$html = file_get_contents('new.php');
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
$uql=array();
preg_match($reg_exUrl, $html, $url);

print_r($url);
于 2011-12-31T19:04:42.753 に答える