在 PHP 中使用 DOM 对象时出现 UTF8 问题

发布于 2024-11-30 12:47:34 字数 1099 浏览 0 评论 0原文

我有一些必须处理的 UTF8 文本+图像数据。

我的整个代码都在一个文件中;这是完整的代码:

<?php
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /></head><body>";

$article_header="აბგდევზთ<img src='some_url/img/15.jpg' alt=''>აბგდევზთ";
echo "1".$article_header."<br>";
$doc = new DOMDocument();
$doc->loadHTML($article_header);
$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
 if(!$img->getAttribute('class')){
$src = $img->getAttribute('src');
$newSRC = str_replace('/img/', '/mini/', $src);
$img->setAttribute('src', $newSRC);
$img->removeAttribute('width'); 
$img->removeAttribute('height');
$article_header = $doc->saveHTML();
            }
                        }
echo "2".$article_header."<br>";
echo "</body></html>";
?>

如您所见,我回显数据两次。

  • 第一次,它如预期那样同时带来文本和图像。

  • 第二次,它会按预期带来修改后的图像。但是文本被损坏了,如下所示: áfáf'áf'áf“áf”áf•áf–áf—

有什么办法可以解决这个问题吗?

I have some UTF8 text+image data which must be processed.

My whole code is in one file; here is the complete code:

<?php
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /></head><body>";

$article_header="აბგდევზთ<img src='some_url/img/15.jpg' alt=''>აბგდევზთ";
echo "1".$article_header."<br>";
$doc = new DOMDocument();
$doc->loadHTML($article_header);
$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
 if(!$img->getAttribute('class')){
$src = $img->getAttribute('src');
$newSRC = str_replace('/img/', '/mini/', $src);
$img->setAttribute('src', $newSRC);
$img->removeAttribute('width'); 
$img->removeAttribute('height');
$article_header = $doc->saveHTML();
            }
                        }
echo "2".$article_header."<br>";
echo "</body></html>";
?>

As you see I echo data 2 times.

  • The first time, it brings both text and image, as expected.

  • The second time, it brings the modified image as expected. But the text becomes damaged, like this: áƒáƒ‘გდევზთ

Is there any way to fix this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南薇 2024-12-07 12:47:34

各位,我已经找到解决办法了!!!!!!!!!呼啦啊!!! :))))
对于那些将来将面临这个问题的人,这里是代码,

$article_header = mb_convert_encoding($article_header, 'HTML-ENTITIES', "UTF-8");

这必须在 loadHTML 之前完成,一切正常!!!!

Guys I've found the solution!!!!!!!!!! Huraaa !!!! :))))
For those who will face this problem in future here is the code

$article_header = mb_convert_encoding($article_header, 'HTML-ENTITIES', "UTF-8");

This must be done before loadHTML and everything works fine!!!!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文