2012-01-31 27 views
47

Có sự khác biệt nào về hành vi của URL bên dưới không.Điều gì & amp; được sử dụng cho

Tôi không biết tại sao & được chèn vào, nó có tạo nên sự khác biệt nào không?

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

so

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

"Hành vi" trong ngữ cảnh nào? –

+0

Liên quan: [Tôi có thực sự cần mã hóa dưới dạng amp?] (Http://stackoverflow.com/questions/3493405/do-i-really-need-to-encode-as-amp) – cspray

+0

Bạn có thể đưa ra một ngữ cảnh không? Đây có phải là một hành động dạng? Chỉ hiển thị trên một trang? – jprofitt

Trả lời

58

& là HTML cho "Start của một tham chiếu nhân vật".

& là tham chiếu ký tự cho "Dấu".

&current; không phải là tham chiếu ký tự chuẩn và do đó là lỗi (trình duyệt có thể cố thực hiện khôi phục lỗi nhưng bạn không nên phụ thuộc vào điều này).

Nếu bạn đã sử dụng tham chiếu ký tự cho một ký tự thực (ví dụ: ™) thì nó (™) sẽ xuất hiện trong URL thay vì chuỗi bạn muốn.

(Lưu ý rằng tùy thuộc vào phiên bản của HTML bạn sử dụng, bạn có thể phải chấm dứt một tham chiếu nhân vật với một ;, đó là lý do &trade= sẽ được coi như ™. HTML 4 cho phép nó được Bỏ qua phần nếu ký tự tiếp theo là một ký tự không phải từ (chẳng hạn như =) nhưng một số trình duyệt (Hello Internet Explorer) có vấn đề với điều này).

1

Nguồn của tôi: http://htmlhelp.com/tools/validator/problems.html#amp

Một lỗi phổ biến khác xảy ra khi bao gồm URL chứa một ký hiệu là và ("&"):

này không hợp lệ:

a href = "foo.cgi chương = 1 & section = 2 & bản sao = 3 & lang = en?"

Giải thích:

Ví dụ này tạo lỗi cho "mục tổ chức không xác định" vì số "&" là ass umed để bắt đầu một tham chiếu thực thể. Trình duyệt thường khôi phục an toàn từ loại lỗi này, nhưng sự cố thực sự xảy ra trong một số trường hợp. Trong ví dụ này, nhiều trình duyệt chuyển đổi chính xác & copy = 3 thành © = 3, điều này có thể khiến liên kết không thành công. Vì ⟨ là thực thể HTML cho khung góc bên trái, một số trình duyệt cũng chuyển đổi & lang = vi thành 〈= vi. Và một trình duyệt cũ thậm chí còn tìm thấy thực thể §, chuyển đổi & phần = 2 thành §ion = 2.

Vì vậy, mục tiêu ở đây là để tránh các sự cố khi bạn đang cố gắng xác thực trang web của mình. Vì vậy, bạn nên thay thế ký hiệu của mình bằng & khi viết URL trong đánh dấu của mình.

Lưu ý rằng thay thế & bằng &amp; chỉ được thực hiện khi viết URL trong HTML, trong đó "&" là ký tự đặc biệt (cùng với "<" và ">"). Khi viết cùng một URL trong một tin nhắn văn bản thuần hoặc trong thanh địa chỉ trình duyệt của bạn, bạn sẽ sử dụng "&" chứ không phải "&amp;". Với HTML, trình duyệt dịch "&amp;" thành "&" để máy chủ Web chỉ thấy "&" và không "&amp;" trong chuỗi truy vấn của yêu cầu.

Hope this helps:)

0

Đó là một ví dụ tuyệt vời. Khi &current được phân tích cú pháp thành nút văn bản, nó được chuyển thành ¤t. Khi được phân tích cú pháp thành giá trị thuộc tính, nó được phân tích cú pháp là &current.

Nếu bạn muốn &current trong một nút văn bản, bạn nên viết &amp;current trong đánh dấu của mình.

Chi tiết đẫm máu ở đây: http://dev.w3.org/html5/spec/tokenization.html#consume-a-character-reference

Các vấn đề liên quan