WordPressの投稿記事から、記事内の最初の画像だけ取り出してサムネイルとして使いたい、という需要は結構ある。ので、検索すると結構ヒットする。

が、ヒットする記事のどれもが間違っている。確かに画像が1点しかない場合は正常動作するが、複数ある場合は最後の1点が取得されてしまうのだ。どうも元になった一本の記事を誰もが検証もせずアフィリエイト目的でコピペして使用しているようである。制作会社として有名なL社のブログなど、正規表現部分がすっぽり抜けており、まったく使用できない。こんな記事を堂々と公開している制作会社ってどうなんですかね!

正しい正規表現が、これだ(エラー処理等は省いてます)。

preg_match('/<img[^>]+src=[\'"]([^\'">]+)[\'"][^>]*>/si',
    $post->post_content, $m);
$img = $m[1]; // $img に画像URLが入る

取得する文字列でタグの閉じである > を無視していいワケがないし、そもそも1点だけでいいなら preg_match_all() を使用する必要もない。技術情報を掲載するなら、正しいかどうかの検証をまずしてもらいたいものである。

というワケで、感心したあなたは是非とも広告をクリックして行ってね!(笑)


Warning: getimagesize(http://cdn.myfonts.com/s/st/ss/8b/246667.gif): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/fmstudio/www/main/mf.php on line 11
Lissain
この書体は Lissain — 欧文フォント買うなら MyFonts