<?php $original_string = '<p>some text <img src="data:image/png;base64,randomIMGData" data-filename="file1.png" style="width: 120px;"><img src="data:image/jpeg;base64,moreIMGData" data-filename="file2.jpg" style="width: 120px;"><p>Some other text<p><img alt="Regular image" src="http://example.com/"><img src="data:image/png;base64,invalidElement" style="width: 120px;"></p>'; $doc = new DOMDocument(); // Treat the string as a frament and do not add a DOCTYPE or mandatory tags $doc->loadHTML($original_string, LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED); // Get all images $imgs = $doc->getElementsByTagName('img'); $id_noveho_clanku = 'testdir'; foreach ($imgs as $img) { $src = $img->getAttribute('src'); $name = $img->getAttribute('data-filename'); // Check if it contains base64 data and a filename if (false !== strpos($src, 'data:image') && "" !== $img->getAttribute('data-filename')) { $data = substr($src, strpos($src, ',') + 1); // Data start $img->setAttribute('src', str_replace($data, '', $src)); // Remove data $name = substr($name, 0, strrpos($name, '.')); // Save the image to disk $path = "../img/clanky/${id_noveho_clanku}/${name}.txt"; // file_put_contents ($path, $data); echo "Saving image data: '${data}' to ${path}\n"; } } // Get the HTML with the data removed $parsed = $doc->saveHTML($doc); echo $parsed;
You have javascript disabled. You will not be able to edit any code.