& amp ใช้สำหรับอะไร


114

ลักษณะการทำงานของ URL ด้านล่างมีความแตกต่างกันหรือไม่

ฉันไม่รู้ว่าทำไม&แทรกมันสร้างความแตกต่างหรือไม่?

www.testurl.com/test?param1=test&current=true

เทียบกับ

www.testurl.com/test?param1=test&current=true


1
คุณสามารถให้บริบท? นี่เป็นการกระทำในรูปแบบหรือไม่? เพิ่งแสดงบนเพจ?
jprofitt

@ user470184 ฉันไม่ได้ลงคะแนน แต่พิจารณาแล้ว มีข้อมูลมากมายเกี่ยวกับ SO เกี่ยวกับปัญหานี้
Charles Sprayberry

"พฤติกรรมทั่วไป" ยังค่อนข้างคลุมเครือ คุณสงสัยเกี่ยวกับบางสิ่งบางอย่างเช่น<p>www.testurl.com/test?param1=test&amp;current=true</p>หรือ<a href="www.testurl.com/test?param1=test&amp;current=true">linky</a>?
jprofitt

@ jprofitt <a href="www.testurl.com/test?param1=test&current=true"> linky </a>
ท้องฟ้าสีฟ้า

คำตอบ:


134

& เป็น HTML สำหรับ "จุดเริ่มต้นของการอ้างอิงอักขระ"

&amp; คือการอ้างอิงอักขระสำหรับ "An ampersand"

&current; ไม่ใช่การอ้างอิงอักขระมาตรฐานดังนั้นจึงเป็นข้อผิดพลาด (เบราว์เซอร์อาจพยายามกู้คืนข้อผิดพลาด แต่คุณไม่ควรขึ้นอยู่กับสิ่งนี้)

หากคุณใช้การอ้างอิงอักขระสำหรับอักขระจริง (เช่น&trade;) (™) จะปรากฏใน URL แทนที่จะเป็นสตริงที่คุณต้องการ

(โปรดทราบว่าขึ้นอยู่กับเวอร์ชันของ HTML ที่คุณใช้คุณอาจต้องลงท้ายการอ้างอิงอักขระด้วย a ;ซึ่งเป็นเหตุผลว่าทำไมจึง&trade=ถือว่าเป็น™ HTML 4 อนุญาตให้มีการ ommited หากอักขระถัดไปเป็นอักขระที่ไม่ใช่คำ ( เช่น=) แต่บางเบราว์เซอร์ (Hello Internet Explorer) มีปัญหากับสิ่งนี้)



5

แหล่งที่มาของฉัน: http://htmlhelp.com/tools/validator/pro issues.html # amp

ข้อผิดพลาดทั่วไปอีกประการหนึ่งเกิดขึ้นเมื่อรวม URL ที่มีเครื่องหมายแอมเพอร์แซนด์ ("&"):

สิ่งนี้ไม่ถูกต้อง:

a href = "foo.cgi? chapter = 1 & section = 2 & copy = 3 & lang = th"

คำอธิบาย:

ตัวอย่างนี้สร้างข้อผิดพลาดสำหรับ "ส่วนเอนทิตีที่ไม่รู้จัก" เนื่องจาก"&"ถือว่าเริ่มต้นการอ้างอิงเอนทิตี เบราว์เซอร์มักจะกู้คืนได้อย่างปลอดภัยจากข้อผิดพลาดประเภทนี้ แต่ปัญหาจริงจะเกิดขึ้นในบางกรณี ในตัวอย่างนี้เบราว์เซอร์จำนวนมากแปลง & copy = 3 เป็น© = 3 ได้อย่างถูกต้องซึ่งอาจทำให้ลิงก์ล้มเหลว เนื่องจาก⟨เป็นเอนทิตี HTML สำหรับวงเล็บมุมชี้ซ้ายเบราว์เซอร์บางตัวจึงแปลง & lang = en เป็น 〈= th และเบราว์เซอร์เก่าตัวหนึ่งยังพบเอนทิตี§การแปลง & section = 2 เป็น§ion = 2

ดังนั้นเป้าหมายคือหลีกเลี่ยงปัญหาเมื่อคุณพยายามตรวจสอบเว็บไซต์ของคุณ ดังนั้นคุณควรแทนที่เครื่องหมายแอมเพอร์แซนด์&amp;เมื่อเขียน URL ในมาร์กอัปของคุณ

โปรดทราบว่าการแทนที่&ด้วย&amp; จะทำได้เฉพาะเมื่อเขียน URL ใน HTML โดยที่"&"อักขระพิเศษอยู่ที่ไหน(พร้อมด้วย "<" and ">") เมื่อเขียน URL เดียวกันในข้อความอีเมลธรรมดาหรือในแถบตำแหน่งของเบราว์เซอร์คุณจะใช้"&"หรือไม่"&amp;"ก็ได้ ด้วย HTML เบราว์เซอร์"&amp;"จะแปลเป็น"&"ดังนั้นเว็บเซิร์ฟเวอร์จะเห็น"&" และไม่"&amp;"อยู่ในสตริงข้อความค้นหาของคำขอ

หวังว่านี่จะช่วยได้ :)


1

นั่นเป็นตัวอย่างที่ดี เมื่อ&currentจะแยกออกเป็นโหนดข้อความ¤tจะถูกแปลงเป็น เมื่อแยกวิเคราะห์เป็นค่าแอตทริบิวต์&currentก็จะแยกวิเคราะห์เป็น

หากคุณต้องการ&currentในโหนดข้อความคุณควรเขียน&amp;currentมาร์กอัปของคุณ

รายละเอียดเกี่ยวกับเลือดอยู่ในข้อกำหนดการแยกวิเคราะห์ HTML5 - สถานะอ้างอิงอักขระที่มีชื่อ


-2

หากคุณกำลังสร้างสตริงอักขระ ทำ:

let linkGoogle = 'https://www.google.com/maps/dir/?api=1'; 
let origin = '&origin=' + locations[0][1] + ',' + locations[0][2];


aNav.href = linkGoogle + origin;

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