मैं PHP का उपयोग कर रहा हूँ DOMDocument loadHTML
विधि का उपयोग कर सामग्री पार्स करने के लिए तो saveHTML
के माध्यम से एक अच्छी तरह से गठित परिणाम हो रही पार्स करने और उपयोगकर्ताओं द्वारा जमा किए एचटीएमएल को सामान्य बनाने के HTML स्रोत मिलती है:पीएचपी DOMDocument - BODY
$dom= new DOMDocument();
$dom->loadHTML('<div><p>Hello World');
$well_formed= $dom->saveHTML();
echo($well_formed);
यह टुकड़े को पार्स करने और उचित समापन टैग जोड़ने का एक सुंदर काम करता है। समस्या यह है कि मुझे टैग्स का एक गुच्छा भी मिल रहा है जो मैं नहीं चाहता हूं जैसे कि <!DOCTYPE>
, <html>
, <head>
और <body>
। मैं समझता हूं कि प्रत्येक अच्छी तरह से बनाए गए HTML दस्तावेज़ को इन टैग की आवश्यकता होती है, लेकिन HTML खंड जो मैं सामान्य कर रहा हूं उसे मौजूदा मान्य दस्तावेज़ में डाला जा रहा है।
वहाँ अच्छी जानकारी यहाँ है, लेकिन मैं तर्क चाहते कि DOMDocument अभी भी एक कानूनी है इसके लिए उपकरण। "लोड HTML" विधि का अस्तित्व का तात्पर्य है कि DOMDocument HTML दस्तावेज़ों के साथ-साथ XML दस्तावेज़ों को पार्स करने के लिए है। PHP में लिखे गए HTMLPurifier या अन्य "सत्य" HTML पार्सर्स बहुत अच्छे हैं, लेकिन उनके perf। PHP ऑब्जेक्ट्स में निर्मित की तुलना में हमेशा पीला जा रहा है। –
@Alan: मैं सहमत हूं कि HTML दस्तावेज़ों को पार्स करने की बात आती है जब DOMDocument बहुत अच्छा है ;;; लेकिन HTML भागों के लिए, विशेष रूप से ** उपयोगकर्ता द्वारा सबमिट ** के लिए, मेरा मानना है कि HTMLPurifier एक बेहतर टूल है: यह उपयोगकर्ता द्वारा सबमिट किए गए HTML को फ़िल्टर करने के उद्देश्य से बनाया गया है - एक सुरक्षा बिंदु से * * (उदाहरण के लिए, DOMDocument XSS के बारे में परवाह नहीं है, जबकि HTMLPurifier करता है;; DOMDocument आपको यह निर्दिष्ट करने की अनुमति नहीं देता है कि HTMLPUrifier करता है, जबकि कौन से टैग/विशेषताओं की अनुमति होनी चाहिए) * –