人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP

あるHTMLファイルの途中から下記のようなHTMLが始まります。

HTMLファイルを読み込み、
DIV IDの「hatena」で挟まれている
<ol>内の<li>内に記述されているリンクを連想配列に入れるにはどうすればよいでしょうか?

--------------------------------------
<div id="hatena">
<ol>
<li>
<a href="http://hoge.com/">ほげほげ</a>
<div>hogehogehoge</div>
<em>textext</em>
</li>
<li>
<a href="http://foo.com/">ふーーー</a>
<div>hogehogehoge</div>
<em>textext</em>
</li>
</ol>
</div>
--------------------------------------

上記のアウトプットとして、下記のような感じです。

[0]=>http://hoge.com/
[1]=>http://foo.com/


よろしくお願いいたします。

●質問者: webtomake
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Cherenkov
●300ポイント

「HTMLファイルを読み込み」とあったのでローカルのhtmlファイルを読み込むコードを書きました。

hateq.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<div id="hatena">
<ol>
<li>
<a href="http://hoge.com/">ほげほげ</a>
<div>hogehogehoge</div>
<em>textext</em>
</li>
<li>
<a href="http://foo.com/">ふーーー</a>
<div>hogehogehoge</div>
<em>textext</em>
</li>
</ol>
</div>
</body>
</html>

XPathを使ってDOM内を検索します。$urlsの中にURLが入ります。

<?php
function pr($var) {
echo '<pre>'; print_r($var); echo '</pre>';
}

$doc = new DOMDocument();
$doc->loadHTMLFile("hateq.html");
$xpath = new DOMXPath($doc);

$query = 'id("hatena")//a';
//$query = 'id("hatena")/ol/li/a'; //これでもよい
$links = $xpath->evaluate($query, $doc);

$urls = array();
foreach ($links as $link) {
array_push($urls, $link->getAttribute('href'));
}
pr($urls);

結果

Array
(
 [0] => http://hoge.com/
 [1] => http://foo.com/
)
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ