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.

kecapi
sumber
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.

Māris Kiseļovs
sumber
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    —   
Dave
sumber
9

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

fredley
sumber
3

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

TheCee
sumber
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.

Rodrigo Horta
sumber
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.

cvadillo
sumber
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?

WebManWalking
sumber
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>
pengguna6000975
sumber