與此類似question 我在使用XML產品,其中包含一些非法字符。我嚴重懷疑我可以讓他們解決問題,但我會嘗試。與此同時,我想要一個解決方法。XML中的項目符號「•」
問題是它包含一個子彈。它在我的源代碼中呈現爲「?」。我已經嘗試了一些編碼轉換,但還沒有找到可行的組合。 (我不習慣甚至考慮我的編碼類型,所以我在這裏不在我的元素中。)所以,我嘗試了下面的代碼,看起來str_replace不能識別「•」。 (它在我的文本編輯器中呈現爲高塊) 您可以看到我嘗試了幾個不同的東西的註釋行。
我試着STR更換「•」,然後再圍繞調整了,這是我最新的:
// deal with bullets in XML.
$bullet="•"; //this was copied and pasted from transliterated text.
//$data=iconv("UTF-8", "windows-1252//TRANSLIT", $data); //transliterate the text:
//$data=str_replace($bullet,'•',$data); // replace the bullet char
$data=str_replace($bullet,' - ',$data); // replace the bullet char
//$data=iconv("windows-1252", "UTF-8", $data); // return the text to utf-8 encoding.
任何想法如何剝離或更換該字符?如果有一個函數可以預先清理XML,那就太棒了,我不必擔心它。
你確定'$ data'中沒有可能導致錯誤的其他字符嗎?如果你嘗試使用'DOMDocument :: loadHtml()'讀取文檔呢?如果xml無效,此方法更容易 – hek2mgl
U + 2022是[XML中的合法字符](http://www.w3.org/TR/2000/REC-xml-20001006#charsets)。但是,它在名稱標記中無效。它如何被使用? –
看看[這個帖子](http://stackoverflow.com/questions/11768839/utf-8-decode-for-php)和[這個資源,派。 3](http://blog.loftdigital.com/blog/php-utf-8-cheatsheet) - 他們告訴你如何設置php默認使用utf-8編碼,以及如何在不同的編碼之間進行轉換在個案基礎上做到這一點(但如果你必須這樣做,你應該真正問自己)。 – collapsar