আমি কিছু এইচটিএমএল সত্তা, যেমন '&lt;'হয়ে ওঠার চেষ্টা করছি '<'।
আমার একটি পুরাতন মণি রয়েছে ( html_helpers ) তবে এটি দু'বার পরিত্যাগ করা হয়েছে বলে মনে হয়।
কোন সুপারিশ? আমি এটি একটি মডেল ব্যবহার করা প্রয়োজন।
আমি কিছু এইচটিএমএল সত্তা, যেমন '&lt;'হয়ে ওঠার চেষ্টা করছি '<'।
আমার একটি পুরাতন মণি রয়েছে ( html_helpers ) তবে এটি দু'বার পরিত্যাগ করা হয়েছে বলে মনে হয়।
কোন সুপারিশ? আমি এটি একটি মডেল ব্যবহার করা প্রয়োজন।
উত্তর:
এইচটিএমএলএনটিটিস এটি করতে পারে:
: jmglov@laurana; sudo gem install htmlentities
Successfully installed htmlentities-4.2.4
: jmglov@laurana; irb
irb(main):001:0> require 'htmlentities'
=> []
irb(main):002:0> HTMLEntities.new.decode "¡I'm highly annoyed with character references!"
=> "¡I'm highly annoyed with character references!"
HTMLEntitiesমণি যেমন মামলা সঙ্গে পুলিশ åএবং —যা CGI.unescapeHTMLনা।
অক্ষরগুলি এনকোড করতে আপনি ব্যবহার করতে পারেন CGI.escapeHTML:
string = CGI.escapeHTML('test "escaping" <characters>')
তাদের ডিকোড করার জন্য, এখানে রয়েছে CGI.unescapeHTML:
CGI.unescapeHTML("test "unescaping" <characters>")
অবশ্যই, এর আগে আপনাকে সিজিআই লাইব্রেরি অন্তর্ভুক্ত করতে হবে:
require 'cgi'
এবং যদি আপনি কারাগারে থাকেন তবে স্ট্রিংটিকে এনকোড করার জন্য আপনাকে সিজিআই ব্যবহার করার দরকার নেই। আছে hপদ্ধতি।
<%= h 'escaping <html>' %>
আমি মনে করি নোকোগিরি রত্নও একটি ভাল পছন্দ। এটি অত্যন্ত স্থিতিশীল এবং এর একটি বিশাল অবদানকারী সম্প্রদায় রয়েছে।
নমুনা:
a = Nokogiri::HTML.parse "foo bär"
a.text
=> "foo bär"
অথবা
a = Nokogiri::HTML.parse "¡I'm highly annoyed with character references!"
a.text
=> "¡I'm highly annoyed with character references!"
CGI.escapeHTMLসম্ভবত কিছু ক্ষেত্রে সমাধান করতে অক্ষম। অন্যদিকে, আপনার যদি একটি সম্পূর্ণ সেট সমর্থন প্রয়োজন, আমি নিশ্চিত Nokogiriযে ভাল পছন্দ।
CGI::escapeHTMLজার্মান চরিত্রগুলি äöüß এর মতো এড়াতে পারে না এবং আরও অনেক কিছু হতে পারে ... নোকোগিরি দিয়ে আমি এখনও পরীক্ষা করে দেখিনি, তবে এটি একটি প্লাস পয়েন্ট হবে।
রেলগুলিতে অক্ষরগুলি ডিকোড করতে ব্যবহার করুন:
<%= raw '<html>' %>
সুতরাং,
<%= raw '<br>' %>
আউটপুট হবে
<br>
#rawকিছুই ডিকোড না। এটি স্ট্রিংটিকে এনকোড না করার জন্য দর্শনটি বলে । এটি স্ট্রিংটি একটি তে মোড়ানো দ্বারা এটি করে ActiveSupport::SafeBuffer, যার পরিবর্তে একটি পতাকা থাকে ( html_safe?) সত্য হিসাবে সেট করা। দৃশ্যটি এই পতাকাটি এটি নির্ধারণ করতে ব্যবহার করে যে স্ট্রিংটি এড়িয়ে যাওয়া ছাড়া সরাসরি এইচটিএমএলতে ইনজেকশন দেওয়া যায়। আমি html_safeপ্রোগ্রামার দ্বারা একটি ইঙ্গিত হিসাবে ভাবতে চাই যে প্রশ্নে থাকা স্ট্রিং ইতিমধ্যে যথাযথভাবে পালিয়ে গেছে।
আপনি যদি কেবলমাত্র এটি করতে (যেমন HTMLEntities) করতে কোনও নতুন নির্ভরতা যুক্ত করতে না চান এবং আপনি ইতিমধ্যে ব্যবহার করছেন Hpricot, এটি আপনার পক্ষে পালিয়ে যেতে এবং আনস্কেপ উভয়ই করতে পারে। এটি এর থেকে অনেক বেশি পরিচালনা করে CGI:
Hpricot.uxs "foo bär"
=> "foo bär"
<% str="<h1> Test </h1>" %>
result: < h1 > Test < /h1 >
<%= CGI.unescapeHTML(str).html_safe %>