दिलचस्प पोस्ट
मैं किसी ऑब्जेक्ट को कैसे सीरियल कर सकता हूं और इसे एंड्रॉइड में एक फाइल में सहेज सकता हूं? किसी भी ऑनलाइन संसाधन से कनेक्ट नहीं हो सकता कैसे टॉमकेट एम्बेड 6? डेल्टाइप (ऑटो) के कुछ उपयोग क्या हैं? AngularJS में, HTML टेम्पलेट्स में शामिल कोई भी इनलाइन जावास्क्रिप्ट कोड काम नहीं करता है जावा: सीपीयू कोर के अनुसार थ्रेड्स कैसे स्केल करें? Android HTTP उपयोगकर्ता एजेंट एक WebView में एक एंड्रॉइड संसाधन लोड हो रहा है Git रीसेट के बीच अंतर क्या है – मिश्रित, – सॉफ्ट, और – हार्ड? PHP / अपाचे: PHP गंभीर त्रुटि: अपरिभाषित फ़ंक्शन mysql_connect () पर कॉल करें ASP.NET वेब एपीआई यूआरएल कैसे बनाएं? सरणी सूची के एक हैशप बनाने का सर्वोत्तम तरीका IQueryable और IEnumerable के बीच अंतर क्या है आइकलिंग <टी> वीएस लिस्ट <टी> इनटाइटी फ्रेमवर्क में कैसे सी # में एक बाइट में एक स्ट्रीम परिवर्तित करने के लिए?

जावा में स्ट्रिपिंग एचटीएमएल टैग

क्या कोई मौजूदा जावा लाइब्रेरी है जो स्ट्रिंग से सभी एचटीएमएल टैग्स को पट्टी करने के लिए एक विधि प्रदान करता है? मैं PHP में strip_tags फ़ंक्शन के बराबर कुछ ढूंढ रहा हूं।

मुझे पता है कि मैं इस स्टीकवॉवरफ्लो प्रश्न में वर्णित एक रेगेक्स का उपयोग कर सकता हूं, हालांकि मैं उत्सुक था अगर पहले से ही stripTags() कॉमन्स लाइब्रेरी में फ्लोटिंग stripTags() विधि हो सकती है जिसे इस्तेमाल किया जा सकता है

वेब के समाधान से एकत्रित समाधान "जावा में स्ट्रिपिंग एचटीएमएल टैग"

जेसूप का उपयोग करें, यह अच्छी तरह से प्रलेखित है, मेवेन पर उपलब्ध है और कई पुस्तकालयों के साथ समय बिताने के बाद, मेरे लिए, यह सबसे अच्छा एक है जो मैं सोच सकता हूं .. मेरा खुद का विचार है, ऐसा काम, पाठ, कोड की एक पंक्ति में संभव होना चाहिए -> अन्यथा पुस्तकालय किसी भी तरह विफल हो गया है … बस कह रहा ^ ^ तो यहाँ यह है, जेसूप का एक लाइनर – मार्कडाउन 4 जे में, ऐसा कुछ भी संभव नहीं है, मार्कांडज में भी , html में क्लेनर यह गधे में कुछ हद तक 50 लाइनों कोड के साथ दर्द है …

 String plain = new HtmlToPlainText().getPlainText(Jsoup.parse(html)); 

और जो आपको मिला है वह असली सादा-पाठ है (सिर्फ एक स्ट्रिंग के रूप में html-source-code नहीं, जैसे कि अन्य लिब्स में) -> वह वास्तव में उस पर एक महान काम करता है यह PHP के लिए मार्कडाइवेट के रूप में एक ही गुणवत्ता के बराबर है ….

इसी पर मुझे Google पर मिला है। मेरे लिए यह ठीक काम किया

 String noHTMLString = htmlString.replaceAll("\\<.*?\\>", ""); 

जो भी आप करते हैं, सुनिश्चित करें कि आप टैग को पट्टी करने का प्रयास करने से पहले डेटा को सामान्य मानते हैं। मैंने हाल ही में एक वेब ऐप सुरक्षा कार्यशाला में भाग लिया जिसमें एक्सएसएस फ़िल्टर चोरी शामिल था। सामान्यतः ऐसा लगता होगा कि < or &lt; या इसके हेक्स के बराबर पर्याप्त होगा मुझे 70 तरीकों से एक स्लाइड देखने के बाद उड़ाया गया था < कि फिल्टर को हरा करने के लिए एन्कोड किया जा सकता है

अद्यतन करें:

नीचे वह प्रस्तुति है जो मैं संदर्भित कर रहा था, नीचे की तरफ से देखने के लिए 70 तरीकों के लिए स्लाइड 26 देखें।

फ़िल्टर चोरी: वायर पर Houdini

कुछ हो सकते हैं, लेकिन एक वास्तविक HTML पार्सर का उपयोग करने के लिए सबसे मजबूत बात है। यहां एक है , और यदि यह उचित रूप से ठीक है, तो आप SAX या अन्य XML पार्सर का भी उपयोग कर सकते हैं।

लगभग एक हफ्ते तक इस प्रश्न को खोलने के बाद, मैं कुछ निश्चितता के साथ कह सकता हूं कि जावा एपीआई या अपाचे लिबर्टीज़ में कोई विधि उपलब्ध नहीं है जो स्ट्रिंग से एचटीएमएल टैग्स स्ट्रिप्स करता है। आपको पिछले उत्तर में बताए अनुसार या तो एक HTML पार्सर का उपयोग करना होगा, या टैग को बाहर निकालने के लिए एक साधारण नियमित अभिव्यक्ति लिखना होगा।

मैंने ऐसा करने के लिए nekoHtml का उपयोग किया है यह सभी टैग्स को छू सकता है लेकिन यह टैग्स के एक सबसेट को आसानी से रख सकता है या छू सकता है।

जब जस्प्स का प्रयोग किया जाता है तो ऊपर के उत्तरों में वर्णित से भी आसान है:

 String html = "bla <b>hehe</b> <br> this is awesome simple"; String text = Jsoup.parse(html).text(); 

मुझे पता है कि यह प्रश्न बहुत पुराना है, लेकिन मैं भी इस बारे में भी देख रहा हूं और ऐसा लगता है कि जावा में अच्छा और आसान समाधान खोजने में अभी भी आसान नहीं है।

आज मैं इस छोटी सी फ़ंक्शन में आया हूँ। यह वास्तव में php strip_tags फ़ंक्शन का अनुकरण करने का प्रयास करता है।

http://jmelo.lyncode.com/java-strip_tags-php-function/

यह इस तरह काम करता है (उनकी साइट से कॉपी किया गया है):

  import static com.lyncode.jtwig.functions.util.HtmlUtils.stripTags; public class StripTagsExample { public static void main(String... args) { String result = stripTags("<!-- <a href='test'></a>--><a>Test</a>", ""); // Produced result: Test } } 

नमस्ते मुझे पता है कि यह धागा पुराना है लेकिन यह अभी भी गूगल पर सबसे ऊपर आया, और मैं एक ही समस्या को ठीक करने के लिए देख रहा था उपयोगी कुछ भी नहीं मिल सका, इसलिए मैं इस कोड स्निपेट के साथ आया – आशा है कि यह किसी को मदद करता है यह सिर्फ स्ट्रिंग पर लूप करता है और सभी टैग को छोड़ देता है। सादा और सरल

 boolean intag = false; String inp = "<H1>Some <b>HTML</b> <span style=blablabla>text</span>"; String outp = ""; for (int i=0; i < inp.length(); ++i) { if (!intag && inp.charAt(i) == '<') { intag = true; continue; } if (intag && inp.charAt(i) == '>') { intag = false; continue; } if (!intag) { outp = outp + inp.charAt(i); } } return outp; 

शुद्ध पुनरावृत्ति दृष्टिकोण और कोई regex के साथ:

 public String stripTags(final String html) { final StringBuilder sbText = new StringBuilder(); final StringBuilder sbHtml = new StringBuilder(); boolean isText = true; for (char ch : html.toCharArray()) { if (isText) { // outside html if (ch != '<') { sbText.append(ch); continue; } else { // switch mode isText = false; sbHtml.append(ch); continue; } }else { // inside html if (ch != '>') { sbHtml.append(ch); continue; } else { // switch mode isText = true; sbHtml.append(ch); continue; } } } return sbText.toString(); } 

एचटीएमएल से बचने के लिए विकेट निम्न विधि का उपयोग करता है: org.apache.wicket.util.string.Strings में स्थित

 public static CharSequence escapeMarkup(final String s, final boolean escapeSpaces, final boolean convertToHtmlUnicodeEscapes) { if (s == null) { return null; } else { int len = s.length(); final AppendingStringBuffer buffer = new AppendingStringBuffer((int)(len * 1.1)); for (int i = 0; i < len; i++) { final char c = s.charAt(i); switch (c) { case '\t' : if (escapeSpaces) { // Assumption is four space tabs (sorry, but that's // just how it is!) buffer.append("&nbsp;&nbsp;&nbsp;&nbsp;"); } else { buffer.append(c); } break; case ' ' : if (escapeSpaces) { buffer.append("&nbsp;"); } else { buffer.append(c); } break; case '<' : buffer.append("&lt;"); break; case '>' : buffer.append("&gt;"); break; case '&' : buffer.append("&amp;"); break; case '"' : buffer.append("&quot;"); break; case '\'' : buffer.append("&#039;"); break; default : if (convertToHtmlUnicodeEscapes) { int ci = 0xffff & c; if (ci < 160) { // nothing special only 7 Bit buffer.append(c); } else { // Not 7 Bit use the unicode system buffer.append("&#"); buffer.append(new Integer(ci).toString()); buffer.append(';'); } } else { buffer.append(c); } break; } } return buffer; } } 
 public static String stripTags(String str) { int startPosition = str.indexOf('<'); int endPosition; while (startPosition != -1) { endPosition = str.indexOf('>', startPosition); str = str.substring(0, startPosition) + (endPosition != -1 ? str.substring(endPosition + 1) : ""); startPosition = str.indexOf('<'); } return str; } 

मेरे पास छांटे हुए स्ट्रिंग की समस्या थी जिसके परिणामस्वरूप असम्बद्ध एचटीएमएल टैग रेगेक्स का पता लगा सकता है। Es:

 Lorem ipsum dolor sit amet, <b>consectetur</b> adipiscing elit. <a href="abc" 

इसलिए, 2 सबसे अच्छे उत्तर (जेसूप और रेगेक्स) का जिक्र करते हुए, मैंने जेसोस का उपयोग करते हुए समाधान की व्याख्या की:

 Jsoup.parse(html).text()