वहाँ \ N कन्वर्ट करने के लिए एक लंबा रास्ता है <br>?
वर्तमान में, मैं इसे इस तरह कर रहा हूं:
mystring.gsub(/\n/, '<br>')
वहाँ \ N कन्वर्ट करने के लिए एक लंबा रास्ता है <br>?
वर्तमान में, मैं इसे इस तरह कर रहा हूं:
mystring.gsub(/\n/, '<br>')
जवाबों:
हां, रेल के पास simple_formatवही है जो आप देख रहे हैं, और थोड़ा बेहतर है क्योंकि यह पैराग्राफ टैग भी जोड़ता है। देख
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
उदाहरण:
simple_format(mystring)
ध्यान दें कि simple_formatमूल HTML टैग की अनुमति देता है, लेकिन यह भी पाठ से गुजरता है sanitizeजिसके माध्यम से सभी लिपियों को हटा दिया जाता है, इसलिए यह उपयोगकर्ता इनपुट के लिए सुरक्षित होना चाहिए।
simple_formatस्वचालित रूप से प्रदान किए गए पाठ को <p>टैग में लपेटता है , और इस कार्यक्षमता से बचा नहीं जा सकता है।
javascript:alert(\no!\)संदर्भ में दिए गए विशेष वाक्यविन्यास की व्याख्या करने वाली रेल पर निर्भर करता है । दुर्भावनापूर्ण हैकर्स के साथ काम करने के लिए अंतहीन विविधताएं और भविष्य की विविधताएं हो सकती हैं।
wrapper_tagविकल्प है जो <p>किसी और चीज़ के लिए टैग बदलने की अनुमति देता है
आप इसे और अधिक सामान्य बना सकते हैं:
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
इस तरह से आप DOS, * NIX, Mac और आकस्मिक अमान्य लाइन अंत को कवर करेंगे।
simple_formatआप उस रेगेक्स पर विभाजित हो सकते हैं, टैग mapखोलने और बंद pकरने में तार लपेटने के लिए उपयोग कर सकते हैं , और फिर उन्हें जोड़ सकते हैं। mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.joinयह करना चाहिए, हालांकि मैं यह परीक्षण नहीं किया।
<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>:। और यह एक आकर्षण booooo की तरह काम करता है!
mystringमनमाना HTML हो सकता है।
जब आप उपयोगकर्ता इनपुट के साथ काम कर रहे हों तो आपको इससे सावधान रहना चाहिए। टैग
simple_formatसम्मिलित करता है <br>, लेकिन यह अन्य HTML टैग की अनुमति देगा !
Simple_format का उपयोग करते समय, <b>Hello</b>" Hello " के रूप में प्रस्तुत किया जाएगा , आप यह नहीं चाह सकते हैं।
इसके बजाय आप उपयोग कर सकते हैं <%= h(c.text).gsub("\n", "<br>").html_safe %>
h()पहले html को एन्कोड करेंगे, gsubलाइन ब्रेक को बदल देंगे और टैग प्रदर्शित करने की html_safeअनुमति देंगे <br>।
यह वही प्रदर्शित करेगा जो उपयोगकर्ता ने दर्ज किया था। यह उदाहरण के लिए टिप्पणियों में html पर चर्चा करने की भी अनुमति देता है।
simple_formatमूल HTML टैग की अनुमति देते समय , यह ध्यान रखना महत्वपूर्ण है कि यह पाठ को भी पास करता है sanitize, जो कुछ भी हटाता है जो संभवतः दुर्भावनापूर्ण हो सकता है। apidock.com/rails/ActionView/Helpers/TextHelper/simple_format
बस उपयोग करें
white-space: pre-line;
आपके सीएसएस में और पाठ लाइन ब्रेक पर लपेट जाएगा।
आप यह भी विचार कर सकते हैं कि आप क्या करने की कोशिश कर रहे हैं - यदि आप अच्छी तरह से पाठ को प्रारूपित कर रहे हैं जिसे लोगों ने दर्ज किया है, तो आप अपने उपयोगकर्ताओं को अपने पाठ को स्वरूपित करने के लिए मार्कडाउन जैसे एक फ़िल्टर पर विचार कर सकते हैं, जो कि HTML के कीड़े के बिना खोल सकते हैं। तुम्हें पता है, जैसे यह स्टैक ओवरफ्लो में यहाँ है।
नहीं। आपके पास जो कुछ भी है वह आमतौर पर इस्तेमाल किया जाने वाला विकल्प है। अधिकांश लोगों द्वारा उपयोग की जाने वाली परिभाषा है:
def nl2br text
text.gsub(/\n/, '<br/>')
end
इसे इस तरह नामित किया गया है क्योंकि यह उसी नाम से PHP फ़ंक्शन की कार्यक्षमता की नकल करता है ।
mystring.gsub(/\r\n|\r|\n/, '\n')
मेरे लिए काम किया
आप ऐसा कर सकते हैं simple_format(h(text))- hयह सुनिश्चित करेगा कि कोई भी HTML प्रदान नहीं की गई है।
जैसा कि अन्य उत्तरों में बताया गया है, यह आपके द्वारा मांगे जाने से थोड़ा अधिक होगा। यह पूरी चीज़ को लपेटता है <p>, और अधिक पैराग्राफ जोड़ता है यदि आपके पास कहीं भी डबल न्यूलाइन्स हैं।