2009-02-12 14 views
5

मेरी रूबी अनुप्रयोग में, मैं एक स्ट्रिंग से सभी HTML टैग्स निकालने के लिए निम्न विधि और नियमित अभिव्यक्ति का उपयोग किया है इसकी अपेक्षा की जा रही थी, सिवाय इसके कि सभी उद्धरण चिह्नों को “ में परिवर्तित किया गया और सभी सिंगल कोट्स को ” में बदला जा सकता है।नियमित अभिव्यक्ति के साथ समस्या निकालने के लिए HTML टैग

गंदे कोड को अपने उचित पात्रों में बदलने के लिए मुझे क्या याद आ रही है?

संपादित करें: समस्या नियमित अभिव्यक्ति के साथ या उसके बिना होती है, इसलिए यह स्पष्ट है कि मेरी समस्या के साथ इसका कोई लेना-देना नहीं है। मेरा सवाल यह है कि इस स्वरूपण त्रुटि से कैसे निपटें और इसे सही करें। धन्यवाद!

+0

आप किसी तरह का उपयोग कर रहे हैं "उद्धरण beautifier" का? – Gumbo

उत्तर

-3

आप जो परिणाम ढूंढ रहे हैं, उन्हें पाने के लिए आप एक बहु-पास प्रणाली का उपयोग कर सकते हैं।

अपनी नियमित अभिव्यक्ति चलाने के बाद, & 8220 को परिवर्तित करने के लिए एक अभिव्यक्ति चलाएं; उद्धरण और दूसरे को & 8221 परिवर्तित करने के लिए; एकल उद्धरण के लिए।

2

आप और अधिक मुसीबत में चलाने के लिए जा रहे हैं जब आप की तरह कुछ देखें:

<doohickey name="<foobar>"> 

आप की तरह कुछ लागू करने के लिए चाहता हूँ:

gsub(/<[^<>]*>/, "") 

... जब तक के लिए पैटर्न मैचों।

+0

जब तक आप का मतलब नहीं था कि ओपी को फर्जी/अमान्य HTML से निपटने के लिए तैयार किया जाना चाहिए, तो आप गलत हैं। यह फॉर्म सही HTML में कभी नहीं दिखाई देगा। –

2

यह नियमित अभिव्यक्ति ठीक वैसी बारे में सब मैं करने के लिए, को छोड़कर यह वजह से सभी उद्धरण चिह्नों “ में तब्दील हो और सभी एकल उद्धरण ” को परिवर्तित करने की होने के लिए यह उम्मीद कर रहा था।

ऐसा लगता है कि RegExp ऐसा नहीं करेगा। क्या आप वाकई अलग हैं?

इस सवाल यहाँ समस्या के बारे में जानकारी के लिए देखें, यह एक उत्कृष्ट जवाब मिल गया है:
Get non UTF-8 form fields as UTF-8 in php.

+0

पवित्र गाय, आप सही हैं। मैंने रेगेक्स जोड़ने के बाद इसे देखा, लेकिन पात्रों पर प्रभाव किसी भी तरह से होता है। मैंने कम स्पष्ट होने के कारण अभी ध्यान नहीं दिया था। तो मेरा सवाल बन जाता है: मैं इस स्वरूपण को कैसे ठीक करूं? – btw

0

मैं चरित्र में परिवर्तन के साथ इसी तरह की एक समस्या हुई, यह हुआ जब मेरे कोड एक और मॉड्यूल के माध्यम से भाग गया है कि लागू यूटीएफ -8 एन्कोडिंग और फिर जब यह वापस आया, तो मेरे हाथों में एक अलग फ़ाइल (लाइनों की फिसल गई सरणी) थी।

5

उपयोग सीजीआई :: unescapeHTML आप अपने नियमित अभिव्यक्ति प्रतिस्थापन प्रदर्शन के बाद:

CGI::unescapeHTML(str.gsub(/<\/?[^>]*>/,"")) 

http://www.ruby-doc.org/core/classes/CGI.html#M000547

ऊपर कोड स्निपेट में देखें, gsub सभी HTML टैग को हटा। फिर, unescapeHTML() सभी HTML इकाइयों (जैसे <, & # 8220) को उनके वास्तविक वर्णों (<, उद्धरण इत्यादि) में वापस लाता है।)

इस पृष्ठ पर एक और पोस्ट करने के लिए सम्मान के साथ, ध्यान दें कि आप कभी पारित किया जा कभी नहीं होगा एचटीएमएल जैसे

<tag attribute="<value>">2 + 3 < 6</tag> 

(जो अमान्य HTML है); क्या आप प्राप्त हो सकता है, बजाय है:

<tag attribute="&lt;value&gt;">2 + 3 &lt; 6</tag> 

कॉल gsub करने के लिए ऊपर बदलना होगा:

2 + 3 &lt; 6 

और unescapeHTML काम खत्म हो जाएगा:

2 + 3 < 6 
संबंधित मुद्दे