पाठ को पार्स करने के प्रयास के लिए खुद ब्राउज़र का उपयोग करने से जुड़े फैंसी समाधान हैं, यह पहचान कर कि क्या कोई डोम नोड्स का निर्माण किया गया है, जो ... धीमा होगा। या नियमित अभिव्यक्ति जो तेज होगी, लेकिन ... संभावित रूप से गलत है। इस समस्या से दो बहुत अलग सवाल उठ रहे हैं:
Q1: एक स्ट्रिंग में HTML टुकड़े होते हैं?
एक HTML दस्तावेज़ का स्ट्रिंग हिस्सा है, जिसमें HTML तत्व मार्कअप या एन्कोडेड इकाइयां हैं? यह एक संकेतक के रूप में इस्तेमाल किया जा सकता है कि स्ट्रिंग को विरंजन / स्वच्छता या इकाई डिकोडिंग की आवश्यकता हो सकती है:
/</?[a-z][^>]*>|(\&(?:[\w\d]+|#\d+|#x[a-f\d]+);/
आप इस पैटर्न को उपयोग में देख सकते हैं को इस लेखन के समय सभी मौजूदा उत्तरों से सभी उदाहरणों के विरुद्ध , साथ ही कुछ ... बल्कि घृणित WYSIWYG- या वर्ड-जनरेटेड सैंपल टेक्स्ट और कई प्रकार के चरित्र इकाई संदर्भ।
Q2: स्ट्रिंग एक HTML दस्तावेज़ है?
HTML विनिर्देश आश्चर्यजनक क्या यह एक HTML दस्तावेज पर विचार करता है के रूप में ढीला है । ब्राउज़र HTML के रूप में लगभग किसी भी कचरा पाठ को पार्स करने के लिए चरम लंबाई तक जाते हैं। दो दृष्टिकोण: या तो सब कुछ HTML पर विचार करें (चूंकि यदि text/htmlसामग्री-प्रकार के साथ दिया गया है, तो उपयोगकर्ता-एजेंट द्वारा इसे HTML के रूप में व्याख्या करने की कोशिश करने के लिए महान प्रयास किया जाएगा ) या उपसर्ग मार्कर की तलाश करें:
<!DOCTYPE html>
"अच्छी तरह से गठित" के संदर्भ में, वह, और लगभग कुछ भी "आवश्यक" नहीं है। निम्नलिखित एक 100% पूर्ण, पूरी तरह से वैध HTML दस्तावेज़ है जिसमें आपके द्वारा सोचा गया हर HTML तत्व है:
<!DOCTYPE html>
<title>Yes, really.</title>
<p>This is everything you need.
हाँ। वहाँ कैसे जैसे कि "लापता" तत्वों के लिए फार्म पर स्पष्ट नियम हैं <html>, <head>, और <body>। हालांकि मुझे यह पता नहीं है कि एसओ का वाक्यविन्यास हाइलाइटिंग एक स्पष्ट संकेत के बिना ठीक से पता लगाने में विफल रहा।