Я хочу знать, возможно ли сделать что-то вроде этого:
`readfile (base64_decode_only_img_src_tags (" mypage.html "));
Я искал решение, нобез результатов.Идея состоит в том, чтобы заменить строки, закодированные из файла html, на его декодированную строку, например:
<img src="data:image/png;base64,**iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEW/v7////+Zw/90AAAAEUlEQVQI12P4z8CAFWEX/Q8Afr8P8erzE9cAAAAASUVORK5CYII=**">
Кому:
<img src="/path/to/images/image.gif">
Я знаю, возможно, мне следует проанализировать код для обнаружениястроки с тегом img src и затем декодируют ** отмеченную часть этих строк **, но я не знаю, как это сделать во время чтения файла.
Заранее спасибо.
Как сказал @mario, я тестирую его код:
$newhtml = file_get_contents('newhtml.html');
function data_to_img($match) {
list(, $img, $type, $base64, $end) = $match;
$bin = base64_decode($base64);
$md5 = md5($bin); // generate a new temporary filename
$fn = "$md5.$type";
file_exists($fn) or file_put_contents($fn, $bin);
return "$img$fn$end"; // new <img> tag
}
Если я попытаюсь повторить:
echo preg_replace_callbak('#(<img[^>]+src=")data:image/(gif|png|jpeg);base64,([\w=+/]+)("[^>]*>)#', "data_to_img", $content);
И это сработало с примером HTML выше!Теперь я пытаюсь с моим настоящим HTML-файлом.Я заметил, что img src длиннее, чем пример, который я привел.Реальный пример img src, который у меня есть, слишком длинный, чтобы вставить его здесь, поэтому, пожалуйста, кликните второй кнопкой мыши на изображение собаки и информацию об изображении, чтобы увидеть код base64.Большое спасибо !!
HTML-файл с изображениями base64
ОБНОВЛЕНИЕ: Надеюсь, у этого парня была такая же проблема с большой кодировкой base64 и регулярным выражением
Ссылка на похожую проблему
ОБНОВЛЕНИЕ2: Марио решил мою проблему, большое спасибо, человек.Вот код и регулярное выражение для preg_replace_callback:
echo preg_replace_callback('#(<img\s(?>(?!src=)[^>])*?src=")data:image/(gif|png|jpeg);base64,([\w=+/]++)("[^>]*>)#', "data_to_img", $content);