[PHP-users 30112] PHPからHTMLのMETAタグを取得する方法

井口廣踏 iguchi @ auntrust.jp
2006年 8月 21日 (月) 11:13:01 JST


はじめまして
井口といいます。

現在、PHPを利用して、外部のサーバーにあるhtmlのMETA(description)タグを取得し、ページに表示したいと
考えています。
しかし、うまく取得することができません。

個人的な意見としては、正規表現をうまく組むことが出来れば解決できると思っているのですが、本とにらめっ
こして時間を費やしている状態です。

余談ですがタイトルの取得は、インターネットをググッて探した、以下の方法で取得できました。
------------------------------
$data = file_get_contents($strUrl);
preg_match_all('@<title(.*?)>(.*?)</title>@i', $data, $title);
$strTitle =  mb_convert_encoding($title[2][0],"EUC-JP", "auto");
------------------------------

これをうまく利用して、METAのdescriptionを取得しようとしているのですが、うまく取得することが出来ませ
ん。
大文字小文字、空白の入り方、タグの閉じ方「/> or >」などきちんと対応した正規表現の方法のアドバイスを
いただければと思います。

また、現状全てのファイルを読み込んで処理を行ってしまっているので、ブログのような1ページに大量の内容
が書かれたページの場合、読み込みに時間がかかってしまっています。

以下のような、fileを使用したものでもかまいません。
※そのほうが、見つかり次第処理を打ち切れるので、理想的です。
------------------------------
$ln = file($url);

for($i=0;$i<count($ln);$i++){
	$start_pos = stripos($ln[$i], "<title>");
	$end_pos = stripos($ln[$i], "</title>");
	$buf = $ln[$i];
	
	if($end_pos){break;}
}
	
$buf = strip_tags($buf);
$enc = mb_detect_encoding($buf, 'EUC-JP,SJIS,ASCII,UTF-8');
$buf = mb_convert_encoding($buf, 'UTF-8', $enc);
------------------------------

皆さんは、このような場合どのように取得しているのでしょうか?
ご存知の方、いましたら返信いただけるとありがたいです。

▼環境
PHP5
Pear
Fedoracore5

以上、長文にお付き合いいただきありがとうございます。


PHP-users メーリングリストの案内