2012-07-08 53 views
2

我有一個HTML字符串,從數據庫中獲取。該字符串有幾個base64圖像,我需要用一個應該從base64圖像字符串生成的圖像文件替換。我不知道我該如何做到這一點。任何指針將高度讚賞。搜索和替換base64圖像字符串與PHP

原始HTML

< IMG WIDTH = 「217」 HEIGHT = 「113」 SRC =「數據:圖像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAAY4AAADPCAYAAADidzYBAAASK0lEQVR4nO3dXYxc5X3H8e + FL3zhC69kyb5AsApVy0VAaBUJalGVl0ogQBVClpqoSYtcK4I2QkjEShAJ2hCpRKXEdbFKJUJDGingIGqRpEAbE0zqZNPSlJbIwSHlxRBMKcSYF7 + vPb347 + mcmZ3dnbN75jxzzvl + pEdaz779PT7j35zz/M/zgCRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiSp5iaA6b5xZbJqpHJcSe8xPZGwFqlxzgVm6H2R7cQXmuprEthG93jeDtyarhypec4lXmR5eow4I1FN/C + 24CqNLxPH3vmpC2m4NUTr7XmpC1lAPkBOYoCMvYuJd3y24CqF49iCW4VPEneGjzsDpCb + GVtwlUbWgntr6kJa4LvAdSX9rLuJe0C2MbpJdgNkjK0jzjZswVUKb + GxV4V1wJvEyhArdRWxrtVZwPeJ1XRHaRNxB7oBMkayO8UfTl2IWifr5HssdSEt8BkG37exGZieGxO5x6dzY6r/JKYGPCY1kcEhSSrE4JAkFTKJq3pIkiRJkiRJ kiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkqTC/g9W561Faz0ASAAAAABJRU5ErkJggg ==」 >

旨在HTML

< IMG WIDTH = 「217」 HEIGHT = 「113」 SRC = 「圖像/ image_from_png.png」 >

回答

6
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 
} 
+0

感謝您的快速響應。是否可以在preg_replace_callback函數中使用類方法(函數)作爲回調? – 2012-07-08 11:29:42

+1

您可以使用任何可調用的符號,請在這裏查看它們:http://www.php.net/manual/en/language.types.callable.php – Pentium10 2012-07-08 14:40:49