perlfaq9: How do I remove HTML from a string?
से
सबसे सही तरीका (यद्यपि सबसे तेज़ नहीं) HTML :: पार्सर का उपयोग सीपीएएन से करना है। एचटीएमएल :: फॉर्मेटटेक्स्ट का उपयोग करने का एक और अधिक सही तरीका है जो न केवल HTML को हटाता है बल्कि परिणामी सादे पाठ के थोड़ा सरल स्वरूपण करने का भी प्रयास करता है।
कई लोग एस/< जैसे * * // // // जी के साथ एक साधारण दिमागी नियमित अभिव्यक्ति दृष्टिकोण का प्रयास करते हैं, लेकिन यह कई मामलों में विफल रहता है क्योंकि टैग लाइन ब्रेक पर जारी रह सकते हैं, उनमें उद्धृत कोण-ब्रैकेट हो सकते हैं, या एचटीएमएल टिप्पणी मौजूद हो सकती है। इसके अलावा, लोग इकाइयों को परिवर्तित करना भूल जाते हैं - उदाहरण के लिए <।
#!/usr/bin/perl -p0777
s/<(?:[^>'"]*|(['"]).*?\1)*>//gs
आप एक अधिक पूर्ण समाधान चाहते हैं, http://www.cpan.org/authors/id/T/TO/TOMC/scripts/striphtml.gz में 3 चरण striphtml कार्यक्रम देखें:
यहाँ एक "सरल दिमाग" दृष्टिकोण है कि ज्यादातर फ़ाइलों के लिए काम करता है।
<IMG SRC = "foo.gif" ALT = "A > B">
<IMG SRC = "foo.gif"
ALT = "A > B">
<!-- <A comment> -->
<script>if (a<b && a>c)</script>
<# Just data #>
<![INCLUDE CDATA [ >>>>>>>>>>>> ]]>
हैं एचटीएमएल टिप्पणी अन्य टैग में शामिल हैं, उन समाधानों भी पाठ पर इस तरह टूट जाएगा:
<!-- This section commented out.
<B>You can't see me!</B>
-->
स्रोत
2009-07-01 08:16:54
मैं शायद नहीं कहूंगा, मैं कहूंगा। रेगेक्स के साथ एचटीएमएल को स्वच्छ करने का प्रयास इस दिन और उम्र में बेतुका है। सीपीएएन से कई HTML स्वच्छता मॉड्यूल में से एक का उपयोग करें, अधिमानतः एक्सएसएस कमजोरियों को रोकने के लिए डिज़ाइन किया गया कुछ और डैनियल म्यूई द्वारा लिखित नहीं। –
एचटीएमएल से सावधान रहें :: स्ट्रिप यूटीएफ -8 एन्कोडेड तारों का सही ढंग से समर्थन नहीं करता है।वर्कअराउंड के लिए यहां देखें https://gist.github.com/910818 – nick