PHP覚え書きブログ
【2012年02月23日】
PHPにはfile_get_contentsという便利な関数がある。
名前からしてファイルの中身を読みこんでくれそうだが、こいつがなんでもありだ。
もちろん、引数でファイルパスを指定してやればその中身をテキストで返してくれる。
しかしこいつのすごいところは引数にURLが指定できるところ。URLを指定すれば、そのサイトのレスポンスを文字列として返してくれる。
つまりサイトのHTMLソースをそのままとってこれるのである。
例えば適当なPHPファイルに、
<?php echo file_get_contents('http://www.yahoo.co.jp'); ?>
っていう一行を書いてやるだけで、このPHPへアクセスするとまんま、ヤフーのトップページのコピーが表示される。
もちろん、ソースに書かれている画像やcssなんかのパス指定がフルURLではなく、相対パスで書かれていたら画像は表示されないし、レイアウトも崩れる。
これをうまく利用すれば、自動的に特定サイトの情報を取り込んでくることができるのである。
例えばある通販サイトの価格情報を監視するようなプログラムも作れる。
もちろんそれには巧みに正規表現を操る能力は必要だ。HTMLソースの自動解析はひたすら正規表現。
preg系の関数でHTMLソースの特定の箇所を抜き出して必要な情報を取り出す。
大変だが、これって結構楽しい。
頑張ればヤフーやグーグルのクローラーのような巡回プログラムを作ることもできる。
あと、画像のURLを指定してやれば、画像のバイナリデータを取得することも可能。取得したデータを適当に新規ファイルを作成して書き込んで保存すれば、画像ファイルが自動取得できるのだ。これを利用すればページ内の全画像一括取得プログラムなんてのも作れてしまう。
とにかく便利。しかもこんなのが関数一発でできてしまうところがPHPはエライ。


