gpt4 book ai didi

javascript - 如何在执行 PHP 时动态编码为 Base64 "preg_replace"

转载 作者:行者123 更新时间:2023-11-28 07:27:51 26 4
gpt4 key购买 nike

我正在使用正则表达式解析 js 文件服务器端,以便找到在实际将代码发送到客户端之前必须更改的模板的所有元素。对于文件来说一切正常,但对于图像则不然。

关键思想是对它们进行经典的 Base64 编码,并使用 atob() 进行解码。我不知道 PHP 是否能够在执行正则表达式时以 Base64 编码图像(?)

如果是,那就可以解释我没有得到结果。如果没有,如果有人能花一点时间帮助我理解下面所示的问题,那就太好了。

解析器(PHP):

$content = file_get_contents('myfile.js');
$pattern = '/__image\[(.*)\]__/i';
$url = '$1';
$complete = preg_replace($pattern, base64_encode(file_get_contents($url)), $content);
echo json_encode($complete);

客户端 Controller (JS):

... //result of an ajax call
content = JSON.parse(responseText);
eval(content); //data are safe

包含对图像(JS)的调用的文件:

    config.design = { 
logo : {
...
},
image : {
...
background : background : 'url(data:image/jpg;base64,__image[css/images/logo/logo.jpg]__)'
},
baseline : {
...
}
};

结果:

background-image: url(data:image/jpg;base64,); //[Error] Failed to load resource ... (kCFErrorDomainCFNetwork erreur -10). (data:image/jpg;base64,false, line 0)

最佳答案

这是一个sample codepreg_replace_callback展示如何修改子匹配。

$str = "background : background : 'url(data:image/jpg;base64,__image[css/images/logo/logo.jpg]__)'\nbackground : background : 'url(data:image/jpg;base64,__image[css/images/logo/logo.jpg]__)'"; 
$re = "/([^<>]*?__image\[)(.*?)(\]__\)')/i";
$str = preg_replace_callback($re, function ($matches) {
return str_replace($matches[1], "background-image: url(",
str_replace($matches[3], ");",
str_replace($matches[2], "<<base64-file>>", $matches[0])));
}, $str);
print ($str);

输出:

background-image: url(<<base64-file>>);background-image: url(<<base64-file>>);

关于javascript - 如何在执行 PHP 时动态编码为 Base64 "preg_replace",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com