2012-05-18 38 views
2
$dom = new DOMDocument('1.0', 'UTF-8'); 
$dom->loadHTML($content); 
$divs = $dom->getElementsByTagName("div"); 
foreach ($divs as $div) { 
    if ($class = $div->attributes->getNamedItem("class")) { 
     if ($class->nodeValue == "simplegalleryholder") 
      $div->parentNode->removeChild($div); 
    } 
} 
$content = $dom->saveHTML(); 

这个简单的代码应该帮我从文档中删除PHP的DOMDocument - 操纵和编码

<div class="simplegalleryholder"> .... </div> 

。唯一的问题是,$ content包含utf8编码的特殊字符(ąęść等),这些特殊字符被过程破坏(我改为Ä,而不是)。

我应该如何处理这个问题才能得到正确的结果?

回答

6

在构造函数中指定UTF-8不会使底层xml处理库将其处理为utf8。以下解决方法确实很不方便,但其作品相当不错。

$encodingHint = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'; 
$dom->loadHTML($encodingHint . $html); 

https://bugs.php.net/bug.php?id=32547

如果要查看在Web浏览器的输出,发送一个真正的HTTP头,而不是HTTP的当量meta标签。这仅用于查看。使用domdocument处理特别需要元标记。

header('content-type: text/html; charset=utf-8'); 
+0

非常感谢,这解决了这个问题。 –

+0

谢谢!你救了我的一天! – Laxmana