「クックパッド」を愛用してる嫁に「ほっとレシピ」勧めたところ画像が欲しいと言われ・・・
phaさん作
ほっとレシピ
嫁に勧めてみたら、画像が欲しいと言われ・・・
ん〜どうしたものかと思ったところ
画像を盗って取ってくるヘルパーつくってみました
注意:
- そのまま使うと超重いですw
- これって直リンじゃ・・・(左様です)
- サーバ環境によっては使えないかも
取ってくるにしても、定時にクロールさせてキャッシュさせとくってのがセオリーでしょうが、あえてお手軽に利用するために、ヘルパーにしてみました。
仕様:
- 対象画像は、jpg,png
- 基本的にそのページの一番大きい画像のURLを取得する
- 横になが〜い画像、縦になが〜い画像は取得しない
こんな感じです。
/view/helpers/steal.php
<?php class StealHelper extends AppHelper { public $helpers = array('Html'); function biggest($url) { $paesre_url = parse_url($url); // ページ全体を読み込む $str = file_get_contents($url); // とりあえず対象拡張子はjpeg,jpg,png preg_match_all("/\<img(.*)src=\"?([\-_\.\!\~\*\'\(\)a-z0-9\;\/\?\:@&=\+$\,\%\#]+(jpg|jpeg|png))/i", $str, $match); $longest_side = 0; $biggest_image = null; foreach ($match[2] as $src) { // 全部http://から始まるURLにする if (strpos($src, 'http://') === false) { if (strpos($src, '/') === 0) { $url = $paesre_url['scheme'] . '://' . $paesre_url['host'] . $src; } else { $url = $paesre_url['scheme'] . '://' . $paesre_url['host'] . dirname($paesre_url['path']) . '/' . $src; } } else { $url = $src; } // 画像のプロパティ取得 $size = @getimagesize($url); if ($size) { $side = $size[0] + $size[1]; $ratio = $size[0] / $size[1]; // 横になが〜い画像、縦になが〜い画像は対象外 if ($ratio > 0.3 && $ratio < 3) { if ($longest_side < $side) { $longest_side = $side; $biggest_image = $url; } } } } if ($biggest_image) { return $this->Html->image($biggest_image); } return null; } } ?>
viewで以下のように
<?php echo $steal->biggest($page_url); ?>
ローカルで試してはみましたが、それっぽい画像が取れました。
しかし、はっきり言って役に立たないヘルパーです><
ajaxで後から読み込むようにしたらスマートかもしれません。