ฉันจะหนีจากคำพูดเดียวได้อย่างไร


188

ฉันจะหลีกเลี่ยง'(คำพูดเดียว) ใน JavaScript ได้อย่างไร

นี่คือที่ฉันพยายามใช้:

<input type='text' id='abc' value='hel'lo'>

ผลลัพธ์สำหรับโค้ดด้านบนคือ "hel" ที่มีอยู่ในกล่องข้อความ ฉันพยายามแทนที่ 'ด้วย \' แต่นี่คือสิ่งที่ฉันได้รับ

<input type='text' id='abc' value='hel\'lo'>

ผลลัพธ์ของโค้ดด้านบนคือ "hel \" บรรจุในกล่องข้อความ

ฉันจะหนีจากคำพูดเดี่ยว ๆ ได้อย่างไร?


สวัสดี Ravi นี่คือคำถาม html เพิ่มเติม ฉัน retagged คำถามเป็น HTML แต่คุณอาจต้องการเปลี่ยนคำถามนั้น
Benjamin Manns

คำตอบ:


358

คุณสามารถใช้เอนทิตี HTML:

  • &#39; สำหรับ '
  • &#34; สำหรับ "
  • ...

สำหรับข้อมูลเพิ่มเติมที่คุณสามารถดูที่ตัวอักษรอ้างอิงนิติบุคคลในรูปแบบ HTML


39
เหตุใดจึงควรใช้เครื่องหมายคำพูดคู่สำหรับค่าแอตทริบิวต์
Gumbo

5
@Pascal MARTIN: XML อนุญาตให้ใช้เครื่องหมายคำพูดเดี่ยวสำหรับค่าแอตทริบิวต์ (ดูw3.org/TR/xml/#NT-AttValue )
Gumbo

4
@Gumbo: wooo! ฉันไม่คิดว่าฉันเคยเห็นเอกสาร XML ใด ๆ ที่ใช้ค่าแอตทริบิวต์ arround คำพูดเดียว ดังนั้นฉันไม่คิดว่ามันถูกต้องจริง ๆ ;; ฉันเพียงแค่(อีกครั้ง)ได้เรียนรู้บางสิ่งบางอย่างในขณะที่ตอบคำถาม; ดังนั้นขอบคุณสำหรับความคิดเห็นเหล่านั้น!
Pascal MARTIN

5
ฉันรู้ว่านี้คือเก่า แต่ฉันคิดว่ามันเป็นที่น่าสังเกตว่ามีเป็นนิติบุคคล HTML สำหรับ":&quot;
daiscog

1
@Pascal ตัวตรวจสอบความถูกต้อง w3c แสดงเครื่องหมายคำพูดเดี่ยวที่ถูกต้องสำหรับแอตทริบิวต์ และดูstackoverflow.com/questions/2210430/…
ChrisJJ

62

คุณสามารถใช้&apos;(ซึ่งแน่นอนใน IE) หรือ&#39;(ซึ่งควรทำงานได้ทุกที่) สำหรับรายการที่ครอบคลุมให้ดูW3C HTML5 อ้างอิงชื่อตัวละครหรือตารางหน่วยงาน HTML ใน WebPlatform.org


ว้าวมันไม่นานแล้วตั้งแต่ฉันเขียนมัน ขอขอบคุณที่จับมัน - ฉันได้อัปเดตลิงก์ไปยังสองตารางใน W3C และ WebPlatform.org
Benjamin Manns

งานเหล่านี้ "ทุกที่" ยกเว้นในแอ็ตทริบิวต์การแสดงออก VXML <var> ที่การหลบหลีกเพิ่มเติมจำเป็นเนื่องจากใน VXML <var> ค่าตัวแปรสตริงถูกระบุว่าเป็นเครื่องหมายคำพูดเดี่ยวภายในเครื่องหมายคำพูดคู่ปกติของคำนิยามแอตทริบิวต์: <var name = "myvar" expr = "'hel \ & apos; lo'" />
Steve Cohen

9

ในขณะที่คุณอยู่ในบริบทของ HTML คุณจะต้องใช้ HTML เพื่อแสดงอักขระนั้น และสำหรับ HTML คุณต้องใช้การอ้างอิงอักขระตัวเลข &#39; ( &#x27;เลขฐานสิบหก):

<input type='text' id='abc' value='hel&#39;lo'>

แต่ฉันไม่เข้าใจว่าคุณหมายถึงcontext of htmlอะไร
coding_idiot

@coding_idiot มีลักษณะที่แตกต่างกันราชสกุลตัวแยกวิเคราะห์ HTML อาจพบในระหว่างขั้นตอนการแยกวิเคราะห์ แต่ละรัฐมีชุดของการแยกวิเคราะห์กฎที่แตกต่างกันที่ถูกทริกเกอร์ขึ้นอยู่กับอินพุต ไม่ใช่ทุกรัฐที่อนุญาตการอ้างอิงอักขระ ตอนนี้ถ้าคุณดูที่ค่าแอททริบิวต์ (ที่ยกมาเดี่ยว)คุณจะเห็นว่า&หมายถึงการเริ่มต้นของการอ้างอิงตัวละคร
Gumbo




-1

ใช้ฟังก์ชันจาวาสคริปต์ inbuild ยกเว้นและ unescape

ตัวอย่างเช่น

var escapedData = escape("hel'lo");   
output = "%27hel%27lo%27" which can be used in the attribute.

again to read the value from the attr

var unescapedData = unescape("%27hel%27lo%27")
output = "'hel'lo'"

สิ่งนี้จะเป็นประโยชน์หากคุณมีข้อมูล json จำนวนมากที่จะใช้ในแอตทริบิวต์


escapeไม่ปลอดภัย Unicode ข้อมูลจำเพาะให้คำแนะนำกับการใช้งาน
เควนติน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.