aren't
變成aren’t
和其他各種愚蠢。DOMDocument改變字符
這是代碼;這是在WordPress內部工作以自動從幾百個帖子中移除一個元素。
function removeImageFromPages() {
$pages = get_pages(array('exclude' => '802,6,4'));
foreach($pages AS $page) {
if($page->post_content == '') { continue; }
$doc = new DOMDocument('1.0', 'UTF-8');
$post_content = stripslashes($page->post_content);
@$doc->loadHTML($post_content);
$content = $doc->saveXML();
echo($content); exit;
}
}
本來帖子內容我操縱儲存在自定義的CMS。 初始 scrape是用DOMDoc完成的,沒有任何編碼問題。但是,第二次似乎有些麻煩。所有標題都設置爲UTF-8,但我對編碼不是很熟悉。第一次,這是一個純粹的HTML刮。現在,我正在直接從數據庫處理值。我錯過了什麼? (DOMDoc甚至是這項工作的正確工具?)
更新 - 我仍然有問題,但有新的信息。
如果我直接從WordPress($ page-> post_content)打印/ echo/var_dump內容,則沒有問題。一旦它通過$ doc-> saveXML或$ doc-> saveHTML,字符就會變得混亂。不過,它們並沒有變得可預見的困惑。
$doc->loadHTML($page->post_content);
echo($doc->saveXML());
息率aren’t
。然而,
$doc->loadHTML($page->post_content);
$ps = $doc->getElementsByTagName('p');
echo($ps->item(3)->nodeValue);
echo($doc->saveXML($ps->item(3)));
產量arenât
(在兩個回聲中)。
此外,如果我從文檔中直接複製/粘貼一個字符串到函數中,它可以很好地工作。只有在處理來自WordPress的值時纔會這樣。
檢查您的數據庫連接和表格歸類是否也是utf-8。您必須在整個系統中使用純UTF-8管道。如果任何地方的任何一個單獨的舞臺都是其他字符集,那麼您將會像這樣得到損壞的文本。 –
與我可以看到的數據庫相關的所有內容(charset和collation)都是utf-8。 – Altari
連接本身也必須是utf-8。嘗試使用'set names'utf-8'':http://dev.mysql.com/doc/refman/5.0/en/charset-connection。html –