Php 查找所有图像并将其从html转换为base64

Php 查找所有图像并将其从html转换为base64,php,base64,Php,Base64,查找所有图像并将其从html转换为base64 我正在用html2canvas做一个截图项目。我的业务受到无法呈现的图像的限制,因此无法显示url中的所有图像 但我尝试用一个已转换为base64的新图像替换其中一个图像URL,并且效果良好 所以我在这里找到了解决办法,只是不能应用到我的网站上。我需要帮助来编译代码以完成我的项目 有没有办法更改此代码: <?php echo ' <html> <body> <div><img src="/image1

查找所有图像并将其从html转换为base64

我正在用html2canvas做一个截图项目。我的业务受到无法呈现的图像的限制,因此无法显示url中的所有图像

但我尝试用一个已转换为base64的新图像替换其中一个图像URL,并且效果良好

所以我在这里找到了解决办法,只是不能应用到我的网站上。我需要帮助来编译代码以完成我的项目

有没有办法更改此代码:

<?php
echo '
<html>
<body>
<div><img src="/image1.jpg" /></div>
<p><img src="/image2.png" /></p>
</body>
</html>
'
?>
但不能将其应用于所有图像URL

更新===

这个问题的主要主题是如何将所有图像转换为base64

我假设如果像这样使用jQuery,它是如何工作的:

<script>
$(function(){
    $('img').each(function() {
        $(this).attr('src', 'BASE64 GENERATED');
    });
});
</script>

$(函数(){
$('img')。每个(函数(){
$(this.attr('src','BASE64-GENERATED');
});
});

遵循的最佳实践是DOMDocument,下面是一个如何做到这一点的示例

$html = '<html>....</html>';
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
        $src = $image->getAttribute('src');
        $type = pathinfo($src, PATHINFO_EXTENSION);
        $data = file_get_contents($src);
        $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
        $image->setAttribute("src", $base64); 
}
$html = $dom->saveHTML();
$html='..';
$dom=新的DOMDocument();
$dom->loadHTML(mb_convert_编码($html,'html-ENTITIES','UTF-8');
$images=$dom->getElementsByTagName('img');
foreach($images作为$image){
$src=$image->getAttribute('src');
$type=pathinfo($src,pathinfo_扩展名);
$data=文件内容($src);
$base64='data:image/'.$type.';base64'.base64_encode($data);
$image->setAttribute(“src”、$base64);
}
$html=$dom->saveHTML();

“但无法将其应用于所有图像URL。”-因为?实际问题是什么?您需要更好地指定它;现在还不清楚。Hy@MagnusEriksson我已经改变了这个问题,请看
<script>
$(function(){
    $('img').each(function() {
        $(this).attr('src', 'BASE64 GENERATED');
    });
});
</script>
$html = '<html>....</html>';
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
        $src = $image->getAttribute('src');
        $type = pathinfo($src, PATHINFO_EXTENSION);
        $data = file_get_contents($src);
        $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
        $image->setAttribute("src", $base64); 
}
$html = $dom->saveHTML();