0

次のコードスニペットがあります。これは基本的にブログサイトを解析し、いくつかの情報を変数として保存します。

global $articles;

$items = $html->find('div[class=blogpost]'); 

foreach($items as $post) {
    $articles[] = array($post->children(0)->innertext,
                        $post->children(1)->first_child()->outertext);
}

foreach($articles as $item) {
    echo $item[0]; 
    echo $item[1];
    echo "<br>";
}

上記のコードは次のように出力されます。

Title of blog post 1 <script type="text/javascript">execute_function(3,'')</script><a href="http://www.example.com/cool_news" id="963"  target="_blank" >Click here for news</a> &nbsp;<img src="/news.gif" width="12" height="12" title="validated" /><span class="title">
Title of blog post 2 <script type="text/javascript">execute_function(3,'')</script><a href="http://www.example.com/neato" id="963"  target="_blank" >Click here for neato</a> &nbsp;<img src="/news.gif" width="12" height="12" title="validated" /><span class="title">
Title of blog post 3 <script type="text/javascript">execute_function(3,'')</script><a href="http://www.example.com/lame" id="963"  target="_blank" >Click here for lame</a> &nbsp;<img src="/news.gif" width="12" height="12" title="validated" /><span class="title">

$ item [0]には「ブログ投稿Xのタイトル」が含まれ、$item[1]には残りが含まれます。

私がやりたいのは、$ item [1]を解析し、それに含まれるURLのみを別の変数として保持することです。おそらく私は自分の質問を正しく表現していませんが、これを理解するのに役立つものは何も見つかりません。

誰か助けてもらえますか?

4

1 に答える 1

2

$item[1]に使用していた DOM クローラー オブジェクトに解析する場合は$html、次の XPath を使用できます。

$item[1]->find('//a[0]/@href');

戻ります

href="http://www.example.com/cool_news"

次に、必要に応じて URL を抽出します。PHP を使用するか、XPath クエリを改良します。値を取得するための XPath が何であるかは不明ですが、おそらく誰かがその値を拡張できる可能性があります。

編集:Simple DOM Parserを使用しているのを見て、次のことを試してください

$blogItemHtml = new simple_html_dom();
$blogItemHtml->load($item[1]);

$anchors = $blogItemHtml->find('a');
echo $anchors[0]->href; // "http://www.example.com/cool_news"
于 2012-12-21T20:16:37.397 に答える