我們的客戶向我們提供了需要使用PHP處理的XML數據。他們選擇通過使用大塊文本(包含換行符)來濫用屬性。 XML解析器用空格替換換行符以符合XML W3。需要使用PHP正則表達式替換換行符,但只能使用引號之間的換行符
爲了確保我們不會丟失我們的換行符,我想以字符串的形式讀入文件,然後使用雙引號將所有換行符翻譯爲
。我想我需要一個正則表達式,但是我遇到了麻煩。
這是我的測試代碼(PHP 5)到目前爲止,使用前視和查找落後,但它不工作:
$xml = '<tag attribute="Header\r\rFirst paragraph.">\r</tag>';
$pattern = '/(?<=")([^"]+?)\r([^"]+?)(?=")/';
print_r(preg_replace($pattern, "$1 $2", $xml));
誰能幫助我得到這個權利?對於經驗豐富的正則表達式主人來說應該很容易:)
也許這將足以只需更換* *任何換行符你' 遇到'?我的意思是,換行符在XML中是(應該是)微不足道的,因此您可以在標籤之間替換換行符而不會破壞任何內容。不要忘記也要替換TAB字符。 – Tomalak 2010-02-22 17:29:24