2012-03-18 30 views
2

Diggのようなリンクをアップロードできるウェブサイト上に機能を作成しようとしています。ユーザーが自分のWebサイトにアップロードしたURLからHTMLソースコードを取得し、.txtファイルに保存するコードがあります。次に、このタグが存在すると仮定して、PHPを使用してHTMLファイルからメタデータを取得するにはどうすればよいですか?

とします。ときどき動作しますが、それ以外のときは動作しません。特定のWebページのソースコードに、自分のコードで指定したのと同じように必要なメタタグが含まれています。 "GRAB THIS"のコンテンツにhtmlエンティティ(&など)が含まれていると正しく動作しないようです。これをどうやって動かすかについてご意見がありましたら教えてください。私はMySQLのデータベースでこれを置くので、私のコードの休憩後、

$html_data = file_get_contents($path_to_txt_file_that_contains_html); 
preg_match('#<meta name="description" content="(.+?)">#si', $html_data, $tor; 
$tor = str_replace ('<meta name="description" content="' , "", $tor[0]); 
$tor = str_replace ('">', "", $tor); 

は時々$ TORはまだ

<meta name="description" content="CONTENT" 

が含まれていますが、閉じずに>:ここに私のコードです。私が間違っていることに関するアイデアは?どんな助けもありがとう!

+0

あなたはHTMLで正規表現を使用しています。 –

答えて

2

実際は非常に簡単です。

PHPはそれが溶液中で構築された独自のです提供しています:http://php.net/manual/en/function.get-meta-tags.php

+0

ヘッドアップありがとう。私は約1時間を探し、これを見たことはありません。 –

+1

うん。私はすぐにそれを見つけたので、あなたが探しているものだと思います。 – Daniel

1

ほとんどの人は、HTMLを解析するためDOMDOCUMENTを使用することを教えてくれます。ほとんどの場合、私は同意しますが、時には正規表現を使う方が簡単です。だからあなたの質問に正規表現を使用しているので、ここでは正規表現の解決策です。

$html_data = file_get_contents($path_to_txt_file_that_contains_html); 
preg_match('#<meta name="description".*content="([^"]+)">#siU', $html_data, $tor); 
$tor = $tor[1]; 

これはテストされていませんが、状況によっては正常に動作するはずです。

関連する問題