2011-08-19 10 views
2

処理する必要があるUTF8テキスト+画像データがあります。PHPでDOMオブジェクトを操作する際のUTF8の問題

私のコード全体は1つのファイルにあります。完全なコードはここにあります:

<?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>"; 
?> 

ご覧のとおり、データを2回エコーします。

  • 初めて、テキストと画像の両方が表示されます。

  • 2度目は、変更されたイメージを期待通りに表示します。しかし、テキストはこのように、破損:áƒáƒ‘გდევზთ

この問題を解決する方法はありますか?

+0

私のエディタでもこれらの文字を認識できません。これらはUTF-8であると確信していますか? –

+0

これは、ジョージア文字です。あなたが望むなら、あなたはロシアの手紙を試すことができます。結果は同じです。それともあなたのutf8の手紙をここに書いてもいいと思います。私はそれを試してみましょう。 – David

+0

私は伝統的な中国語(検測 - テスト)を試しましたが、両方とも動作します。私はギリシャ語(δοκιμή - test)もテストしました。 –

答えて

5

私は解決策を見つけました!!!!!!!!!!フラダンス!!!! :)))) 将来的にこの問題に直面する人のためには、ここでは、コード

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

これはloadHTML前に行う必要があり、すべてが正常に動作している!!!!

+0

クール................. –

+0

Thxの兄は、ちょうど研究の1時間後に解決策を見つけた... – artur99

関連する問題