উত্তর:
না , নেই। এইচটিএমএল যথাযথভাবে, কিছু অক্ষর থেকে পালানোর কোনও উপায়ই কম নয়:
&
যেমন &
<
যেমন <
(ঘটনাচক্রে, পালানোর দরকার নেই >
তবে প্রতিযোগিতার কারণে লোকেরা প্রায়শই এটি করে))
এবং অবশ্যই আপনাকে ফলাফলকে ঘিরে রাখা উচিত, পালিয়ে যাওয়া এইচটিএমএল কোডের মধ্যে <pre><code>…</code></pre>
(ক) সাদা স্থান এবং লাইন বিরতি সংরক্ষণ করুন এবং (খ) কোডের উপাদান হিসাবে চিহ্নিত করুন।
আপনার কোডটি কোনও <textarea>
বা (অবনমিত) <xmp>
উপাদানটিতে মোড়ানো করার মতো অন্যান্য সমস্ত সমাধান ভেঙে যাবে । 1
এক্সএইচটিএমএল যে এক্সএমএল যেমন ব্রাউজারে ঘোষিত হয় (মাধ্যমে HTTP- র Content-Type
হেডার - নিছক সেটিং একটি! DOCTYPE
হয় যথেষ্ট নয় ) অন্যথায় একটি CDATA বিভাগ ব্যবহার করতে পারে:
<![CDATA[Your <code> here]]>
তবে এটি কেবল এক্সএমএলে কাজ করে, এইচটিএমএল নয়, এমনকি এটি কোনও বুদ্ধিমান সমাধান নয়, কারণ কোডটি অবশ্যই ক্লোজিং ডিলিমিটার ধারণ করে না ]]>
। এমনকি এক্সএমএল এমনকি সহজতম, সবচেয়ে শক্তিশালী সমাধান পলায়ন মাধ্যমে হয়।
পয়েন্টে 1 কেস:
>
সঙ্গে >
<
এবং &
প্রতিস্থাপন করা দরকার, >
এইচটিএমএলের অভ্যর্থনাবিহীন বৈধ।
এইচটিএমএলের জন্য চেষ্টা করা এবং সত্য পদ্ধতি:
&
প্রথমটি এবং <
তারপরে হ্যান্ডেল করেছেন ।
সবচেয়ে ভালো উপায়:
<xmp>
// your codes ..
</xmp>
পুরানো নমুনা:
নমুনা 1 :
<pre>
This text has
been formatted using
the HTML pre tag. The brower should
display all white space
as it was entered.
</pre>
নমুনা 2 :
<pre>
<code>
My pre-formatted code
here.
</code>
</pre>
নমুনা 3 : (যদি আপনি আসলে কোডের একটি ব্লক "উদ্ধৃতি" দিচ্ছেন, তবে মার্কআপটি হবে)
<blockquote>
<pre>
<code>
My pre-formatted "quoted" code here.
</code>
</pre>
</blockquote>
সুন্দর সিএসএস নমুনা:
pre{
font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
margin-bottom: 10px;
overflow: auto;
width: auto;
padding: 5px;
background-color: #eee;
width: 650px!ie7;
padding-bottom: 20px!ie7;
max-height: 600px;
}
সিনট্যাক্স হাইলাইটিং কোড (প্রো কাজের জন্য):
রংধনু (খুব নিখুঁত)
আপনার জন্য সেরা লিঙ্ক:
https://github.com/balupton/jquery-syntaxhighlighter
http://bavotasan.com/2009/how-to-wrap-text-within-the-pre-tag-using-css/
http://alexgorbatchev.com/SyntaxHighlighter/
কোড প্রদর্শনের জন্য একটি নির্লজ্জ পদ্ধতির ধরণ এটি একটি টেক্সেরিয়ায় অন্তর্ভুক্ত করবে এবং অক্ষম বৈশিষ্ট্য যুক্ত করবে যাতে এটি সম্পাদনাযোগ্য নয়।
<textarea disabled> code </textarea>
আশা করি যে কেউ কোনও জিনিস সহজ করার সহজ উপায় অনুসন্ধানে সহায়তা করবে ..
অবহেলিত <xmp>
ট্যাগটি মূলত তা করে তবে এটি আর এক্সএইচটিএমএল অনুমানের অংশ নয়। এটি এখনও সমস্ত বর্তমান ব্রাউজারে থাকা সত্ত্বেও কাজ করা উচিত।
এখানে আরেকটি ধারণা, একটি হ্যাক / পার্লার ট্রিক, আপনি কোডটি এমনভাবে একটি টেক্সটরিয়ায় রাখতে পারেন:
<textarea disabled="true" style="border: none;background-color:white;">
<p>test</p>
</textarea>
কোনও পাঠ্য অঞ্চলে এর মতো কোণ বন্ধনী এবং কোড লাগানো অবৈধ এইচটিএমএল এবং বিভিন্ন ব্রাউজারগুলিতে অপরিজ্ঞাত আচরণের কারণ হবে। ইন্টারনেট এক্সপ্লোরারে এইচটিএমএলকে ব্যাখ্যা করা হয়, যেখানে মজিলা, ক্রোম এবং সাফারি এটিকে ব্যাখ্যা ছাড়াই ছেড়ে দেয়।
আপনি যদি এটি সম্পাদনযোগ্য না করে দেখতে এবং অন্যরকম দেখতে চান তবে আপনি CSS ব্যবহার করে সহজেই এটি স্টাইল করতে পারেন। একমাত্র সমস্যাটি হ'ল ব্রাউজারগুলি বাক্সটির আকার পরিবর্তন করতে নীচে-ডান কোণে সেই ছোট্ট ড্র্যাগ হ্যান্ডেল যুক্ত করবে। অথবা বিকল্পভাবে, পরিবর্তে একটি ইনপুট ট্যাগ ব্যবহার করে দেখুন।
আপনার টেক্সেরিয়ায় কোড ইনজেক্ট করার সঠিক উপায়টি এই পিএইচপি এর মতো সার্ভার সাইড ভাষা ব্যবহার করা উদাহরণস্বরূপ:
<textarea disabled="true" style="border: none;background-color:white;">
<?php echo '<p>test</p>'; ?>
</textarea>
তারপরে এটি এইচটিএমএল ইন্টারপ্রেটারকে বাইপাস করে এবং সমস্ত ব্রাউজারগুলিতে ধারাবাহিকভাবে টেক্সারিয়াতে অপরিবর্তিত পাঠ্য রাখে।
এগুলি ছাড়া, একমাত্র উপায় হ'ল স্থির এইচটিএমএল বা সার্ভার-সাইড পদ্ধতি যেমন .NET এর এইচটিএমএল এনকোড () ব্যবহার করে যদি এই জাতীয় প্রযুক্তি ব্যবহার করা হয় তবে কোডটি থেকে নিজেকে মুক্তি দেওয়া।
<textarea disabled="true" style="border: none;background-color:white; width:100%">
আমি অনুমান করি:
<
পালানোর দরকার নেইআপনার সমস্ত বিকল্প এই গাছটিতে রয়েছে:
<p>
)
<
"
এবং &thing;
পালাতে হবে: "
এবং &thing;
যথাক্রমে<script>
এবং <style>
শুধুমাত্র</script
কোথাও অনুমতি দেওয়া হয় না<script>
<textarea>
এবং <title>
শুধুমাত্র<textarea>
কোড মোড়ানোর জন্য একজন ভাল প্রার্থী</html>
সেখানে লেখা সম্পূর্ণ আইনী</textarea
সুস্পষ্ট কারণে
সাবস্ট্রিং</textarea
বা অনুরূপ এড়াতে&thing;
পালাতে হবে: &thing;
দ্রষ্টব্য: >
কখনই পালানোর দরকার নেই। এমনকি সাধারণ উপাদানগুলিতেও নয়।
<script>
এবং <style>
দৃশ্যমান উপস্থাপন করা যেতে পারে, কেবল এটিকে জাভাস্ক্রিপ্ট হিসাবে কার্যকর করতে না চাইলে এবং এর <body>
সাথে কিছু রেখে দিন। আমি মনে করি এটি একটি দুর্দান্ত কৌশল, শিক্ষিত প্রোগ্রামিং এবং শিক্ষার পক্ষে ভাল। এছাড়াও এখনও প্রধান ব্রাউজারগুলিতে প্রয়োগ করা হয়, যদিও এটি অবনতিযুক্ত। style="display: block; white-space: pre;"
type="text/html"
<xmp>
<xmp>
বৈধ এইচটিএমএল 5 নয়, তবে আপনার অন্যান্য কৌশলটি সঠিক দেখাচ্ছে!
যদি আপনার লক্ষ্যটি একই কোডে আপনি অন্য কোথাও চালাচ্ছেন এমন কোডের একটি অংশ দেখানো হয় তবে আপনি টেক্সট কনটেন্টটি ব্যবহার করতে পারেন (এটি খাঁটি-জেএস এবং ভাল সমর্থিত: http://caniuse.com/#feat=textcontent )
<div id="myCode">
<p>
hello world
</p>
</div>
<div id="loadHere"></div>
document.getElementById("myCode").textContent = document.getElementById("loadHere").innerHTML;
ফলাফলটিতে মাল্টি-লাইন ফর্ম্যাটিং পেতে, আপনাকে CSS স্টাইল সেট করতে হবে "সাদা-স্থান: প্রাক;" টার্গেট ডিভের উপর এবং প্রতিটিটির শেষে "\ r \ n" ব্যবহার করে স্বতন্ত্রভাবে লাইনগুলি লিখুন।
এখানে একটি ডেমো রয়েছে: https://jsfiddle.net/wphps3od/
এই পদ্ধতির টেক্সটরিয়া ব্যবহার করার সুবিধা রয়েছে: কোডটি টেক্সারিয়ায় যেমন হয় তেমন পুনরায় ফর্ম্যাট করা যায় না। (বিষয়গুলি
সম্পূর্ণ কোনও টেক্সেরিয়ায় সরানো হয়)
<template>
এমন কোনও কিছুর সাথে ব্যবহার করতে পারি যা সাধারণত রেন্ডার হয় না।
শেষ পর্যন্ত সবচেয়ে ভাল (যদিও বিরক্তিকর) উত্তর হ'ল "পাঠ্যটি এড়ানো"।
তবে অনেকগুলি পাঠ্য সম্পাদক রয়েছে - বা এমনকি একা একা মিনি ইউটিলিটিস - যা এটি স্বয়ংক্রিয়ভাবে করতে পারে। সুতরাং আপনি যদি না চান তবে আপনাকে কখনই ম্যানুয়ালি পলায়ন করা উচিত নয় (যদি না এটি পালানো এবং পালানো কোডের মিশ্রণ না হয় ...)
দ্রুত গুগল অনুসন্ধান আমাকে এটিকে দেখায়, উদাহরণস্বরূপ: http://malektips.com/zzee-text-utility-html-escape-regular-expression.html
<textarea ><?php echo htmlentities($page_html); ?></textarea>
আমার জন্য ভাল কাজ করে ..
" Alexander's
পরামর্শকে মাথায় রেখে , এখানে কেন আমি মনে করি এটি একটি ভাল পদ্ধতি"
যদি আমরা কেবল সহজ চেষ্টা করি তবে এটি <textarea>
সর্বদা কার্যকর না হতে পারে যেহেতু বন্ধ করার textarea
ট্যাগগুলি ভুলভাবে প্যারেন্ট ট্যাগটি বন্ধ করে দিতে পারে এবং পিতামাতার নথিতে বাকী এইচটিএমএল উত্স প্রদর্শন করতে পারে যা বিশ্রী দেখায়।
htmlentities
সমস্ত প্রযোজ্য অক্ষর যেমন < >
HTML সত্তাগুলিতে রূপান্তর করে যা ফাঁসের কোনও সম্ভাবনা দূর করে elim
এই পদ্ধতির উপকারিতা বা ঘাটতি বা একই ফলাফল অর্জনের আরও ভাল উপায় হতে পারে, তবে দয়া করে মন্তব্য করুন কারণ আমি তাদের কাছ থেকে শিখতে চাই :)
কাঁচা পাঠ্য সন্নিবেশ করতে আপনি পিএইচপি এর মতো একটি সার্ভার সাইড ল্যাঙ্গুয়েজ ব্যবহার করতে পারেন:
<?php
$str = <<<EOD
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="description" content="Minimal HTML5">
<meta name="keywords" content="HTML5,Minimal">
<title>This is the title</title>
<link rel='stylesheet.css' href='style.css'>
</head>
<body>
</body>
</html>
EOD;
?>
তারপরে $str
htmlencoded এর মানটি ফেলে দিন:
<div style="white-space: pre">
<?php echo htmlentities($str); ?>
</div>
এটি একটি সহজ কৌশল এবং আমি এটি সাফারি এবং ফায়ারফক্সে চেষ্টা করেছি
<code>
<span><</span>meta property="og:title" content="A very fine cuisine" /><br>
<span><</span>meta property="og:image" content="http://www.example.com/image.png" />
</code>
এটি এর মতো দেখাবে:
আপনি এটি এখানে সরাসরি দেখতে পাবেন
আসলে এটি করার একটি উপায় আছে। এটির সীমাবদ্ধতা (এক) রয়েছে তবে এটি 100% মানক, অবচয়হীন নয় (xmp এর মতো), এবং কাজ করে।
এবং এটি তুচ্ছ। এটা এখানে:
<div id="mydoc-src" style="display: none;">
LlNnlljn77fggggkk77csJJK8bbJBKJBkjjjjbbbJJLJLLJo
<!--
YOUR CODE HERE.
<script src="WidgetsLib/all.js"></script>
^^ This is a text, no side effects trying to load it.
-->
LlNnlljn77fggggkk77csJJK8bbJBKJBkjjjjbbbJJLJLLJo
</div>
দয়া করে আমাকে ব্যাখ্যা করুন সবার আগে, সাধারণ এইচটিএমএল মন্তব্য কাজটি করে, পুরো ব্লকটি ব্যাখ্যা করা থেকে বাঁচাতে। আপনি এটিতে যে কোনও ট্যাগ সহজেই যুক্ত করতে পারেন, সেগুলি সব উপেক্ষা করা হবে। ব্যাখ্যা থেকে অবহেলিত, কিন্তু এর মাধ্যমে এখনও উপলব্ধ innerHTML
! তাই যা বাকী রয়েছে তা হ'ল বিষয়বস্তুগুলি পাওয়া এবং পূর্ববর্তী এবং অনুবর্তী মন্তব্য টোকেনগুলি ফিল্টার করা।
(মনে রাখবেন - সীমাবদ্ধতা ব্যতীত) আপনি ভিতরে এইচটিএমএল মন্তব্য রাখতে পারবেন না, যেহেতু (কমপক্ষে আমার ক্রোমে) এর নীড় বাঁধাই সমর্থিত নয় এবং খুব প্রথম '->' শোটি শেষ করবে।
ভাল, এটি একটি বাজে সামান্য সীমাবদ্ধতা, তবে কিছু ক্ষেত্রে এটি কোনও সমস্যা নয়, যদি আপনার পাঠ্য এইচটিএমএল মন্তব্য মুক্ত থাকে। এবং, একটি নির্মাণের পরে পালানো আরও সহজ, তারপরে একটি সম্পূর্ণ গোছা।
এখন, সেই অদ্ভুত LlNnlljn77fggggkk77csJJK8bbJBKJBkjjjjbbbJJLJLLJo
স্ট্রিংটি কী? এটি হ্যাশের মতো একটি এলোমেলো স্ট্রিং, ব্লকটিতে ব্যবহারের সম্ভাবনা নেই এবং এর জন্য ব্যবহার করা হয়? এখানে প্রসঙ্গটি, কেন আমি এটি ব্যবহার করেছি। আমার ক্ষেত্রে, আমি একটি ডিআইভির বিষয়বস্তু নিয়েছি, তারপরে এটি শোডাউন মার্কডাউন দিয়ে প্রক্রিয়া করেছি এবং তারপরে আউটপুটটিকে অন্য ডিভের জন্য বরাদ্দ করা হয়েছে। এইচটিএমএল ফাইলে মার্কডাউন ইনলাইন লিখতে এবং একটি ব্রাউজারে খোলার জন্য ধারণাটি ছিল, এটি ফ্লাই-অন-ফ্লাইতে রূপান্তরিত করবে। সুতরাং, আমার ক্ষেত্রে, <!--
রূপান্তরিত হয়ে যায় <p><!--</p>
, মন্তব্যটি সঠিকভাবে পালিয়ে যায়। এটি কাজ করে তবে পর্দা দূষিত করে। সুতরাং, সহজেই রেজেক্সের সাহায্যে এটি সরাতে, এলোমেলো স্ট্রিং ব্যবহার করা হয়েছিল। কোডটি এখানে:
var converter = new showdown.Converter();
converter.setOption('simplifiedAutoLink', true);
converter.setOption('tables', true);
converter.setOption('tasklists', true);
var src = document.getElementById("mydoc-src");
var res = document.getElementById("mydoc-res");
res.innerHTML = converter.makeHtml(src.innerHTML)
.replace(/<p>.{0,10}LlNnlljn77fggggkk77csJJK8bbJBKJBkjjjjbbbJJLJLLJo.{0,10}<\/p>/g, "");
src.innerHTML = '';
এবং এটি কাজ করে।
কারও আগ্রহী হলে এই কৌশলটি ব্যবহার করে এই নিবন্ধটি লেখা হয়েছে। ডাউনলোড করতে নির্দ্বিধায় এবং এইচটিএমএল ফাইলের ভিতরে দেখুন।
এটি নির্ভর করে আপনি এটি কী জন্য ব্যবহার করছেন। এটি কি ব্যবহারকারী ইনপুট? তারপরে ব্যবহার করুন <textarea>
এবং সবকিছু থেকে পালাতে পারেন । আমার ক্ষেত্রে, এবং সম্ভবত এটি আপনার ক্ষেত্রেও, আমি কেবল মন্তব্য ব্যবহার করেছি, এবং এটি কাজটি করে।
আপনি যদি মার্কডাউন ব্যবহার না করেন এবং কোনও ট্যাগ থেকে যেমনটি পেতে চান তবে এটি আরও সহজ:
<div id="mydoc-src" style="display: none;">
<!--
YOUR CODE HERE.
<script src="WidgetsLib/all.js"></script>
^^ This is a text, no side effects trying to load it.
-->
</div>
এবং এটি পেতে জাভাস্ক্রিপ্ট কোড:
var src = document.getElementById("mydoc-src");
var YOUR_CODE = src.innerHTML.replace(/(<!--|-->)/g, "");
এইচটিএমএল থেকে সমস্ত কিছু থেকে বাঁচার কয়েকটি উপায় রয়েছে , এগুলির কোনওটিই দুর্দান্ত নয়।
অথবা আপনি এমন একটি রাখতে পারেন iframe
যা প্লেইন পুরানো পাঠ্য ফাইল লোড করে।
এটি আমি এটি করেছিলাম:
$str = file_get_contents("my-code-file.php");
echo "<textarea disabled='true' style='border: none;background-color:white;'>";
echo $str;
echo "</textarea>";
function escapeHTML(string)
{
var pre = document.createElement('pre');
var text = document.createTextNode(string);
pre.appendChild(text);
return pre.innerHTML;
}//end escapeHTML
এটি পালিয়ে যাওয়া এইচটিএমএল ফিরিয়ে দেবে
আপনি চেষ্টা করতে পারেন:
Hello! Here is some code:
<xmp>
<div id="hello">
</div>
</xmp>
এটি কিছুটা হ্যাক, তবে আমরা এরকম কিছু ব্যবহার করতে পারি:
body script {
display: block;
font-family: monospace;
white-space: pre;
}
<script type="text/html">
<h1>Hello World</h1>
<ul>
<li>Enjoy this dodgy hack,
<li>or don't!
</ul>
</script>
সেই সিএসএসের সাহায্যে ব্রাউজারটি দেহের অভ্যন্তরে স্ক্রিপ্টগুলি প্রদর্শন করবে। এটি এই স্ক্রিপ্টটি কার্যকর করার চেষ্টা করবে না, কারণ এটির অজানা প্রকার রয়েছে text/html
। <script>
আপনি যদি একটি ক্লোজিং </script>
ট্যাগ অন্তর্ভুক্ত না করতে চান তবে এটির অভ্যন্তরে বিশেষ অক্ষরগুলি রক্ষা করার দরকার নেই ।
আমি পৃষ্ঠার শরীরে এক্সিকিউটেবল জাভাস্ক্রিপ্ট প্রদর্শনের জন্য এই জাতীয় কিছু ব্যবহার করছি "একরকম" সাক্ষরতার প্রগতিতে "।
এই প্রশ্নে আরও কিছু তথ্য রয়েছে ট্যাগগুলি কখন দৃশ্যমান হওয়া উচিত এবং কেন তারা করতে পারে? ।
//To show xml tags in table columns you will have to encode the tags first
function htmlEncode(value) {
//create a in-memory div, set it's inner text(which jQuery automatically encodes)
//then grab the encoded contents back out. The div never exists on the page.
return $('<div/>').text(value).html();
}
html = htmlEncode(html)
একটি দম্পতির উত্তরগুলির সংমিশ্রণ যা এখানে একসাথে কাজ করে:
function c(s) {
return s.split("<").join("<").split(">").join(">").split("&").join("&")
}
displayMe.innerHTML = ok.innerHTML;
console.log(
c(ok.innerHTML)
)
<textarea style="display:none" id="ok">
<script>
console.log("hello", 5&9);
</script>
</textarea>
<div id="displayMe">
</div>