2

我有一个从数据库中获取的 HTML 字符串。该字符串有几个base64图像,我需要用应该从base64图像字符串生成的图像文件替换它们。我不知道我该怎么做。任何指针将不胜感激。

原始 html

<img width="217" height="113" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAY4AAADPCAYAAADidzYBAAASK0lEQVR4nO3dXYxc5X3H8e+FL3zhC69kyb5AsApVy0VAaBUJalGVl0ogQBVClpqoSYtcK4I2QkjEShAJ2hCpRKXEdbFKJUJDGingIGqRpEAbE0zqZNPSlJbIwSHlxRBMKcSYF7+vPb347+mcmZ3dnbN75jxzzvl+pEdaz779PT7j35zz/M/zgCRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiSp5iaA6b5xZbJqpHJcSe8xPZGwFqlxzgVm6H2R7cQXmuprEthG93jeDtyarhypec4lXmR5eow4I1FN/C+24CqNLxPH3vmpC2m4NUTr7XmpC1lAPkBOYoCMvYuJd3y24CqF49iCW4VPEneGjzsDpCb+GVtwlUbWgntr6kJa4LvAdSX9rLuJe0C2MbpJdgNkjK0jzjZswVUKb+GxV4V1wJvEyhArdRWxrtVZwPeJ1XRHaRNxB7oBMkayO8UfTl2IWifr5HssdSEt8BkG37exGZieGxO5x6dzY6r/JKYGPCY1kcEhSSrE4JAkFTKJq3pIkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkqTC/g9W561Faz0ASAAAAABJRU5ErkJggg== ">

预期的html

<img width="217" height="113" src="images/image_from_png.png">

4

1 回答 1

9
echo preg_replace_callback('#(<img\s(?>(?!src=)[^>])*?src=")data:image/(gif|png|jpeg);base64,([\w=+/]++)("[^>]*>)#', "data_to_img", $content);

function data_to_img($match) {
    list(, $img, $type, $base64, $end) = $match;

    $bin = base64_decode($base64);
    $md5 = md5($bin);   // generate a new temporary filename
    $fn = "tmp/img/$md5.$type";
    file_exists($fn) or file_put_contents($fn, $bin);

    return "$img$fn$end";  // new <img> tag
}
于 2012-07-08T10:55:09.603 回答