WordPress記事内の最初の画像を表示(諸々問題解決)

WordPress記事内の最初の画像を表示、画像表示問題も解決。
https://emplace.jp/blog/web/20160405-em2488/

などの記事を読んで、最初の画像をアイキャッチとして取得する機能を function.phpに追加する場合、全角文字により日本語ファイル名が含まれていると正規表現がヒットしませんでした。全角文字が含まれていてもマッチするような式に変更しました。

修正前// $output = preg_match_all(“/<img[^>]+src=[\”‘](s?https?:\/\/[\-_\.!~\*'()a-z0-9;\/\?:@&=\+\$,%#]+\.(jpg|jpeg|png|gif))[\”‘][^>]+>/i”, $post->post_content, $matches);
修正後$output = preg_match_all(“/<img[^>]+src=[\”‘](s?https?:\/\/[!-~ぁ-んァ-ヶー一-龠]+\.(jpg|jpeg|png|gif))[\”‘][^>]+>/i”, $post->post_content, $matches);

 

修正のポイントは

  • .jpg の前を「半角もしくは全角の文字の繰り返し」にヒットする方向で修正
  • 「ぁ-んァ-ヶー一-龠」で全角にもヒットさせる

を追加することにより、全角文字によるファイル名の場合も動作するようになりました。

 

参考

正規表現 PHPのpreg_match色々(全角や漢字も許可など)
https://qiita.com/tabo_purify/items/df8f2aa17094b1a60c82