XML

2012-06-14 10 views
5

के लिए उपयोगकर्ता इनपुट सुरक्षित बनाएं उपयोगकर्ता सबमिट किए गए टेक्स्ट से PHP के साथ वैध XML उत्पन्न करने के लिए सबसे अच्छा अभ्यास क्या है, उदा। एम्परसैंड, कोण ब्रैकेट, गैर-एसीआईए उच्चारण उच्चारण, नई लाइन इत्यादि के साथ ईकामर्स बिक्री डेटाXML

क्या कार्य, पुस्तकालय, regexes लोग भरोसा करते हैं?

+0

मैं वर्तमान में CDATA और htmlentities का उपयोग कर रहा है, और एक एक उच्चारण चिह्न लिओन में ओ के बाद एक trainwreck मैं strtr साथ उच्चारण वर्ण को हटाने हूँ() का कारण बना। चीज कंपनी बैक ऑफिस लोगों को एचटीएमएलएटीटीएस() आउटपुट से नफरत है और उनके विंडोज कोडर उनके लिए डीकोड नहीं कर सकते हैं। – jerrygarciuh

+0

लगता है कि आप सीडीएटीए के साथ समस्या होने की तुलना में वर्णमाला एन्कोडिंग को मिश्रित कर रहे हैं। एचटीएमएलटीटी और सीडीएटीए का उपयोग करके बीटीडब्लू को ज्यादा समझ नहीं आता है। तो पागल और व्यापक रूप से किसी चीज को मारने के अनुमान लगाने के बजाय, पहले पता लगाएं कि समस्या कहां है। समाधान तब अक्सर छोटा होता है। तो वास्तव में क्या काम नहीं करता है? – hakre

+0

वैसे हमारे पास कुछ knuckleheads है जो एक ईकामर्स स्टोर बनाने के लिए अभिव्यक्ति इंजन के सारणी भंडारण का उपयोग किया। टेबल एन्कोडिंग ईई से मेल खाने के लिए सेट हैं। स्टोर मालिक का बैक ऑफिस विंडोज है और दूसरी पार्टी द्वारा निष्पादन योग्य है जो विंडोज बॉक्स पर एक्सएमएल और ग्रेट प्लेेंस में आयात स्वीकार करता है। मुझे एपीआई लिखने का काम सौंपा गया था जो निष्पादन योग्य से कॉल वितरक, स्टोर उत्पादों, और वितरक और खुदरा आदेश सिंक करने के लिए कॉल स्वीकार करता है। मैं सीडीएटीए टैग में उपयोगकर्ता इनपुट के हर टुकड़े को लपेटना नहीं चाहता था, लेकिन जब भी मैंने पाया तो मुझे लगता है कि मैंने उछाल उड़ाया है। – jerrygarciuh

उत्तर

4
htmlentities()

'<tag><![CDATA[' . htmlentities($theData) . ']]></tag>' 

या इसका उपयोग करते DOM

$dom = new DOMDocument("1.0", "utf-8"); 

/* ... */ 

$dom->createCDATASection(htmlentities($theData)); 
साथ CDATA टैग और एनकोड डेटा में

लपेटें जानकारी

+0

क्षमा करें, लेकिन उत्तर थोड़ा सा दिखता है जैसे कि आपके पास सीडीएटीए के लिए कोई सुराग नहीं है और इसके साथ क्या करने के लिए htmmlentities हैं या नहीं। – hakre

1

यदि आप बाइनरी सुरक्षितता चाहते हैं, तो आपको अतिरिक्त परिवहन एन्कोडिंग का उपयोग करने की आवश्यकता है। उदाहरण के लिए आप एक्सएमएल खंड के अंदर एक बाइनरी सुरक्षित फैशन में डेटा स्टोर करने के लिए base64 या uuencode का उपयोग कर सकते हैं।