2011-06-02 40 views
0

我正在用PHP的xml解析器編寫xml到文本文件腳本。用@標記和數據分隔屬性符號,我注意到當我打開文本文件時,符號被視爲他們自己的數據。使用PHP xml解析器處理符號

i.e. <equation valid="yes">For this theorem assume X < Y and Z & A = 0</equation> 
should have output @[email protected] |For this theorem assume X < Y and Z & A = 0| 
but instead I have @[email protected] |For this theorem assume X| |<| |Y| and Z | |&| | A = 0| 

所以我相信這是怎麼回事是,任何符號依賴於& [A-Z] +;或& [0-9] +;被視爲兩個標籤之間的不同數據。我試過preg_replace("/&([a-z]+);/","\1",$data)和數字相同只是有字母/數字給我以後格式化,但這似乎沒有任何作用。如何讓XML解析器將這些符號識別爲數據的一部分?

編輯1:我剛纔也試過用\ &替換所有&,但那也沒有做任何事,我只是在我的數據分隔符之前得到反斜槓。

回答

0

我相信你問一個字符串中的特殊字符? 如果是這樣您需要使用ascii equivilent,即

For this theorem assume X < Y and Z & A = 0 
    Becomes 
    For this theorem assume X &lt; Y and Z &amp; A &#61; 0 
+0

對,就是這個問題。我不認爲我解釋得很好,當php的xml解析器碰到'&'符號時,它認爲它在不同於以前的數據節點,我不確定我應該改變什麼, [AZ] +/[0-9] +;正則表達式不是一個新的數據節點。 – NorthGuard 2011-06-02 20:20:39

+1

你在XML文檔中指定了什麼編碼? – 2011-06-02 20:34:09

+0

我試過UTF-8和US-ASCII – NorthGuard 2011-06-02 20:44:37