PHP ウエブページからタイトルだけを取り出す
PHP で直接ウエブページを開き、そこから<title>タグで囲まれた部分だけを取り出す。
URLをオープン
//fopenでURLを開く(エラー処理つき) if (!($handle = fopen("http://www.apple.co.jp", 'r'))) { print "URLが存在しないか接続できませんでした。"; die; } // //この間に作業を記述。 // fclose ($handle);
<TITLE>タグ以外のHTMLタグを取り除く
//URLからHTMLタグを取り除きながら1行ずつ読み込む(1024バイトまで) while (!feof ($handle)) { $buffer = fgetss($handle, 1024,'<title>'); // }
- fgetss()関数は、オープンしたファイルから文字列をHTMLのタグを取り除きながら読み込んでくれる。三番目のオプションに<title>などの、残したいタグを入れておけば、そのタグだけは取り除かれない。
http://www.php.net/manual/ja/function.fgetss.php
タイトルを抜き出す
- stristr()は文字列に特定の文字が含まれているかどうか判断する関数。$bufferに<title>が含まれていれば、その行だけ$posに入ってくる。
http://www.php.net/manual/ja/function.stristr.php - strip_tags()は文字列からHTMLタグを取り除いてくれる。最後に$pos2にタイトルが残る。
http://www.php.net/manual/ja/function.strip-tags.php
//<title>行だけを抜き出す(<title>が含まれていれば$posに代入) $pos = stristr($buffer,'<title>'); //HTMLタグを取り除く $pos2 = strip_tags($pos); print $pos2;
- ちなみに全体はこんな感じ。
<?php //fopenでURLを開く(エラー処理つき) if (!($handle = fopen("http://www.apple.co.jp", 'r'))) { print "URLが存在しないか接続できませんでした。"; die; } //URLからHTMLタグを取り除きながら1行ずつ読み込む while (!feof ($handle)) { $buffer = fgetss($handle, 1024,'<title>'); //<title>行だけを抜き出す(<title>が含まれていれば$posに代入) $pos = stristr($buffer,'<title>'); //HTMLタグを取り除く $pos2 = strip_tags($pos); print $pos2; } fclose ($handle); ?>
- 以上のコードは、まだ??な完成度。自分でもなぜ動いているかよくわからない(笑)。もっとエレガントな解決があっていいと思う。