PHP でブログ記事から記事のサムネール画像を自動抽出できるようになったらサムネール画像登録の手間が省けて楽だなと思い、img タグの src の中身を取得する関数を作ったらうまく自動抽出できるようになったので、ソースコードを載せておきます。
public function findFirstImgSrc($article)
{
$targetTag = '<img';
$imgStartPos = strpos($article, $targetTag);
if ($imgStartPos === false)
{
return null;
}
$imgStart = substr($article, $imgStartPos + strlen($targetTag));
$imgSrcStartPos = strpos($imgStart, 'src="');
if ($imgSrcStartPos === false)
{
return null;
}
$imgSrcStart = substr($imgStart, $imgSrcStartPos + strlen('src="'));
$imgSrcEndPos = strpos($imgSrcStart, '"');
return substr($imgSrcStart, 0, $imgSrcEndPos);
}
ついでに Youtube 動画が埋め込んである記事からは Youtube 埋め込みタグに使われている iframe の src を取得したかったので、そちらも対応したソースコードも載せておきます。
public function findFirstImgSrc($article)
{
return $this->findFirstSrc($article, "img");
}
public function findFirstIframeSrc($article)
{
return $this->findFirstSrc($article, "iframe");
}
private function findFirstSrc($article, $tagName)
{
$targetTag = '<img'.$tagName;
$tagStartPos = strpos($article, $targetTag);
if ($tagStartPos === false)
{
return null;
}
$tagStart = substr($article, $tagStartPos + strlen($targetTag));
$srcStartPos = strpos($tagStart, 'src="');
if ($srcStartPos === false)
{
return null;
}
$srcStart = substr($tagStart, $srcStartPos + strlen('src="'));
$srcEndPos = strpos($srcStart, '"');
return substr($srcStart, 0, $srcEndPos);
}