簡體   English   中英

php DOMDocument-操作和編碼

[英]php DOMDocument - manipulating and encoding

$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();

這個簡單的代碼應該可以幫助我刪除

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

從文檔中。 唯一的問題是,$ content包含utf8編碼的特殊字符(±ęść等),這些特殊字符已被處理程序破壞(我改為使用iÄ™Å,ż)。

我應該如何解決這個問題以獲得正確的結果?

在構造函數中指定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-equiv元標記。 這僅用於查看。 使用domdocument進行處理特別需要meta標簽。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM