转换字符串中的base64内容

Convert base64 contents in a string

这是我的问题 (PHP),我有一个可能是这样的字符串 :

$var = 'Hello, hello, hello <img src="data:image/png;base64,lkqhdklqbhjdkhlqjshdljhqsdhqslkjhdlqhdjlkqshdjlkhsq"> hello hello <img src="data:image/png;base64,ljshqflhsqjlkfhjqsfjlkqhs"> jhfqflsqjk';

而且我想转换在 var $var 中遇到的每一个 base64 图像。但我不知道,我该怎么做...特别是,一种切割字符串以仅隔离 img 标签的方法。

我只想做一个函数,它以 var $var 作为参数

$var = 'Hello, hello, hello <img src="data:image/png;base64,lkqhdklqbhjdkhlqjshdljhqsdhqslkjhdlqhdjlkqshdjlkhsq"> hello hello <img src="data:image/png;base64,ljshqflhsqjlkfhjqsfjlkqhs"> jhfqflsqjk';

然后给我:

return "Hello, hello, hello <img src="firstImage.jpg"/> hello hello <img src="secondImage.jpg"/> jhfqflsqjk";

以 jpg 或 png 格式

这里是一个使用正则表达式的例子,但是如果你正在解析一个完整的 HTML 文档,最好使用 DOM 来解析 HTML 然后你就可以走了文档处理图片标签。

这是使用正则表达式的示例:

<?php

$var = 'Hello, hello, hello <img src="data:image/png;base64,lkqhdklqbhjdkhlqjshdljhqsdhqslkjhdlqhdjlkqshdjlkhsq"> hello hello <img src="data:image/png;base64,ljshqflhsqjlkfhjqsfjlkqhs"> jhfqflsqjk';

if ( ($c = preg_match_all('/<img.*?src=(?:\'|")?data:image\/(?:png|jpeg|jpg|gif);base64,([^\'"\s>]+)/i', $var, $matches)) > 0 ) {
    for ($i = 0; $i < $c; ++$i) {
        $data = base64_decode($matches[1][$i]);
        if ($data) {
            // successfully base64 decoded
        }
    }
}

演示:https://regex101.com/r/vA1tT4/1

This answer 也可能有帮助。希望这能让你前进。