通常バージョンはこちら

AMPモードで画像タグ必須のwidthとheightを全記事一括取得するPHPコード

日付2017-06-17T20:51:23
分類
画像0枚
訪問数

AMPモードでは画像タグ<img>に横幅Widthと縦幅Heightの属性が必須でいずれか一つでも欠けていると画像が全く表示されません。 PDOのSQL文で正規表現を使ってWidthが無いもの、Heightが無いもの、それぞれWhere Likeして記事の画像タグを抽出し、getimagesize関数で一気に取得することができました。

getimagesize
array getimagesize ( string $filename [, array &$imageinfo ] )
function setsize($matches){
    list($w, $h) = getimagesize($matches[2]);
    return '<img' . $matches[1] . 'src="'.$matches[2].'" '. $matches[3] . ' width="' . $w . '" height="' . $h . '">';
}

foreach ($stmt as $row) {
    $content = preg_replace_callback(
        "/<img(.+?)src=\"(.+?)\"(.+?)>/",
        "setsize",
        $row['content']);
    $pdo->query("UPDATE article SET content = '{$content}' WHERE id={$row['id']}");
}

preg_replace_callback関数は複雑な正規表現の置換に適しており、独自関数をブチ込めます。それによって正規表現置換でgetimagesize関数が実現されます。

注意事項
既にwidthやheightが付いていた場合、うまく絞れていないとwidth="596" height="299" width="596" height="299"と重複します。

日付2017-06-17T20:51:23
分類
画像0枚
訪問数
最後までお読みいただき有難うございました
Thank you for watching until the end

似たような記事