2012-06-27 109 views
0

用戶在我的PHP代碼中調用Web服務API,但沒有正確編碼輸入(如&符號等),因爲廢話(我不能使用b *詞在這裏,但你知道,開發人員不關心政治或感情,你做對了或不!)這是我的問題,以解決它...在我嘗試在PHP中解析它之前,如何編碼輸入XML ?PHP在輸入Web服務XML中編碼特殊字符XML

我做了一個字符串替換&符號,但偏離了這些人(a *字)可以使用的宇宙中有更多無效字符。

回答

0

我幾乎完全確保沒有內置功能來做到這一點,在PHP中。因爲php的模塊需要的最小值是...一個合適的編碼xml文件(例如libxml/libdom)

不正確的編碼文件很難消毒,因爲您必須考慮「應該編碼什麼」和「什麼不應該被編碼「

你需要來標記你的輸入XML,那麼你需要檢查每一個單件和消毒的代碼錯件,例如字符」包含的屬性

裏面是一個艱苦的工作,那麼你可以做的更好的事情是修復或修復源xml

恕我直言!

0

我建議你返回一個HTTP 400錯誤,這意味着「請求無法通過服務器因語法錯誤的理解。」(RFC 2616

既然你期待有效的XML,你可以使用loadXml將其加載到DOMDocument中,並使用libxml_get_errors的結果查看XML錯誤(我建議使用libxml_use_internal_errors(true))。

您可以在響應正文中返回libxml錯誤(例如請求中的「未轉義'&'等)。