2009-07-22 7 views
5

मैं रेल एप्लिकेशन पर काम कर रहा हूं और मैं जानना चाहता हूं कि सीएसएस या जावास्क्रिप्ट के ब्लॉक को पट्टी करने का सबसे अच्छा तरीका क्या है।स्ट्रिप्स इनलाइन सीएसएस और जावास्क्रिप्ट रेल में

<style> 
... 
</style> 
    -or- 
<script> 
... 
</script> 

मैं strip_tags उपयोग कर रहा हूँ सहायक एचटीएमएल के सबसे का ख्याल रखना है, लेकिन यह सीएसएस का एक समूह को छोड़ देता है जब सामग्री इनलाइन सीएसएस शामिल हैं। धन्यवाद

उत्तर

0

ऐसा करने का अनुशंसित तरीका sanitize विधि का उपयोग कर रहा है। strip_tags विधि कुछ हद तक सीमित और कम सुरक्षित है: एचटीएमएल से

[strip_tags] स्ट्रिप्स सभी HTML टैग, टिप्पणियाँ होती हैं । यह एचटीएमएल-स्कैनर टोकनेज़र का उपयोग करता है और इसलिए इसकी एचटीएमएल पार्सिंग क्षमता एचटीएमएल स्कैनर द्वारा सीमित है।

यदि आप sanitize का उपयोग करते हैं, तो आप अधिक सुरक्षित होंगे, बस उन टैग्स की एक सफेद सूची के साथ आओ जिन्हें आप पहले अनुमति देना चाहते हैं।

+0

धन्यवाद में क्या कहा, लेकिन जो कि मेरी समस्या का समाधान नहीं होगा। मैं उद्घाटन और समापन शैली टैग से छुटकारा पाना चाहता हूं, साथ ही साथ उन टैग के बीच सभी इनलाइन सीएसएस भी प्राप्त करना चाहता हूं। इस तरह मैं केवल सादा पाठ के साथ छोड़ दिया गया है। –

0

यदि आपको अपने एप्लिकेशन के लिए उपयोगकर्ता द्वारा प्रदत्त सीएसएस की आवश्यकता है, तो आप http://github.com/courtenay/css_file_sanitize/tree/master का उपयोग करने का प्रयास कर सकते हैं।

+0

धन्यवाद, यह निश्चित रूप से उपयोगी होगा, लेकिन यह मेरे प्रश्न का उत्तर नहीं देता है (ऊपर टिप्पणी देखें)। धन्यवाद –

4

कोशिश Nokogiri पुस्तकालय का उपयोग करें:

require 'nokogiri' 

str = " ... " # some html from user 
doc = Nokogiri::HTML(str) 
doc.css("style,script").remove # remove all tags with content 
new_string = doc.to_s 

Nokogiri कर सकते हैं और अधिक है, लेकिन यह आप प्रश्न :-)