Cara menghindari tanda kutip ganda dalam atribut judul


195

Saya mencoba menggunakan string yang berisi tanda kutip ganda dalam atribut judul jangkar. Sejauh ini saya mencoba ini:

<a href=".." title="Some \"text\"">Some text</a>
<!-- The title looks like `Some \` --!>

dan

<a href=".." title="Some &quot;text&quot;">Some text</a>
<!-- The title looks like `Some ` --!>

Harap dicatat bahwa menggunakan tanda kutip tunggal bukanlah suatu pilihan.


18
@Haim membaca pertanyaan ... itu mengatakan "tanda kutip tunggal bukan pilihan".
Nils Riedemann

2
@harpax - Saya hanya ingin tahu mengapa tanda kutip tunggal bukan pilihan?
Bert F

3
Kutipan tunggal bukan html yang valid.
skyfoot

1
Contoh kedua Anda harus bekerja dengan sangat sempurna. Di browser mana Anda melihat masalah?
Olly Hodgson

1
@harpax: mungkin Anda harus mengklarifikasi "tanda kutip tunggal bukan opsi" - syarat. Saya akan menduga bahwa Anda ment tanda kutip tunggal "di dalam 'string' bukan pilihan (seperti yang ditampilkan kepada pengguna), tetapi hanya membalik tanda kutip tunggal dan ganda seperti yang ditunjukkan Haim di atas akan baik-baik saja.
Christian.K

Jawaban:


284

Varian ini -

<a title="Some &quot;text&quot;">Hover me</a>

Benar dan berfungsi seperti yang diharapkan - Anda melihat tanda kutip normal di laman yang diberikan.


Ya. <a href="#" title="Foo &quot;Bar&quot;">Testing</a>dan <a href="#" title="Smart quotes &#8221;Bar&#8220;">Testing too</a>bekerja untukku.
Olly Hodgson

5
@Maris: Ya ... saya tidak melihat tanda kutip normal di laman yang diberikan saat saya membuat & quot; (Firefox, Chrome). Mengapa?
Krzysztof Trzos

@Maris, masalah yang sama di sini. Lihat teks "& quot;" muncul di IE dan Chrome saat pengguna menelusuri elemen.
rstackhouse

Hebatnya bekerja dengan konten html tertanam dalam atribut (untuk javascript untuk menghasilkan textarea yang dapat diedit):data-editable-note="<?php echo str_replace('"', '&quot;', $note); ?>"><?php echo mark::up($note); ?></div>
WEBjuju

23

Berikut cuplikan dari karakter pelarian HTML yang diambil dari halaman dalam cache di archive.org :

&#060   |   less than sign  <       
&#064   |   at sign @       
&#093   |   right bracket   ]       
&#123   |   left curly brace    {       
&#125   |   right curly brace   }       
&#133   |   ellipsis    …       
&#135   |   double dagger   ‡       
&#146   |   right single quote  ’       
&#148   |   right double quote  ”       
&#150   |   short dash  –       
&#153   |   trademark   ™       
&#162   |   cent sign   ¢       
&#165   |   yen sign    ¥       
&#169   |   copyright sign  ©       
&#172   |   logical not sign    ¬       
&#176   |   degree sign °       
&#178   |   superscript 2   ²       
&#185   |   superscript 1   ¹       
&#188   |   fraction 1/4    ¼       
&#190   |   fraction 3/4    ¾       
&#247   |   division sign   ÷       
&#8221  |   right double quote  ”       
&#062   |   greater than sign   >   
&#091   |   left bracket    [   
&#096   |   back apostrophe `   
&#124   |   vertical bar    |   
&#126   |   tilde   ~   
&#134   |   dagger  †   
&#145   |   left single quote   ‘       
&#147   |   left double quote   “   
&#149   |   bullet  •   
&#151   |   longer dash —   
&#161   |   inverted exclamation point  ¡   
&#163   |   pound sign  £   
&#166   |   broken vertical bar ¦   
&#171   |   double left than sign   «   
&#174   |   registered trademark sign   ®   
&#177   |   plus or minus sign  ±   
&#179   |   superscript 3   ³   
&#187   |   double greater-than sign    »   
&#189   |   fraction 1/2    ½   
&#191   |   inverted question mark  ¿   
&#8220  |   left double quote   “   
&#8212  |   dash    —   

9

Kode pelarian &#34;juga dapat digunakan sebagai ganti &quot;.


3

Menggunakan &quot;adalah cara untuk melakukannya. Saya mencoba cuplikan kode kedua Anda, dan berfungsi baik di Firefox maupun Internet Explorer.


2

Ini dapat bekerja dengan karakter apa pun dari daftar karakter Escape HTML , tapi saya punya masalah yang sama dengan proyek Java. Saya menggunakan StringEscapeUtils.escapeHTML("Testing \" <br> <p>")dan judulnya <a href=".." title="Test&quot; &lt;br&gt; &lt;p&gt;">Testing</a>.

Ini hanya berfungsi untuk saya ketika saya mengubah StringEscapeUtils StringEscapeUtils.escapeJavascript("Testing \" <br> <p>")dan bekerja di setiap browser.


solusi terbaik menurut saya
Mohammed Rafeeq

Baik jika Anda menggunakan Java, tetapi karena penanya asli meminta HTML, mungkin ini bukan pilihan.
Paul

1

Setidaknya ada satu situasi di mana menggunakan tanda kutip tunggal tidak akan berfungsi dan itu adalah jika Anda membuat markup "on the fly" dari JavaScript. Anda menggunakan tanda kutip tunggal untuk mengandung string dan kemudian properti apa pun di markup dapat memiliki tanda kutip ganda untuk nilainya.


1

Mungkin Anda bisa menggunakan JavaScript untuk menyelesaikan masalah lintas-peramban Anda. Ini menggunakan mekanisme pelarian yang berbeda, yang sudah Anda kenal:

(reference-to-the-tag).title = "Some \"text\"";

Itu tidak benar-benar memisahkan fungsi HTML, JavaScript, dan CSS seperti yang diinginkan orang-orang saat ini, tetapi siapa yang perlu Anda buat bahagia? Pengguna atau teknisi Anda yang tidak Anda kenal?


Berlebihan ketika keinginan yang diinginkan dapat dicapai dengan cara yang lebih langsung.
Paul

-3

Anda dapat menggunakan kode PHP ini untuk membuat daftar karakter khusus ...

<table border="1"><?php for($i=33;$i<9000;$i++)echo "<tr><td>&#38;#$i;<td>&#".$i.";"; ?></table>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.