2012-07-24 3 views
3

У меня есть таблица на моей странице, которая показывает имя карты, стоимость, набор, редкость. Эта информация поступает из таблицы базы данных. Когда пользователь зависает над любым именем карты в таблице, появляется изображение, открывающее карту, и как только мышь удаляется, изображение закрывается (для этого используется сценарий jQuery).Проблема с rel = 'imageName', когда имя содержит одну цитату

Это как код из cardname клеток выглядеть:

<td><a href='#' class='screenshot' rel='cards/$cardname.jpg'>$cardname</a></td> 

Все работает отлично, за исключением, когда $ cardname содержит ", который путает код и предотвращает изображение от показа (пример cardname не работает может «Вера»). Я пытался использовать 'вместо этого, но это тоже не работает.

Я знаю, что это, вероятно, не лучший способ достичь того, что я пытаюсь сделать, но я совершенно новичок в веб-программировании, и это показалось простым приемом, чтобы заставить его работать.

print "<table id='cardTable'> 
       <tr> 
        <th>Add to deck</th> 
        <th>Cardname</th> 
        <th>Cost</th> 
        <th>Set</th> 
        <th>Rarity</th> 
       </tr>"; 

     while ($row = mysql_fetch_array($result)) { 
      $cardname = $row['cardname']; 
      $cost = $row['cost']; 
      $set = $row['set']; 
      $rarity = $row['rarity']; 
      $idCard = $row['idCard']; 

      print "<tr> 
        <td> 
        <form action='' method='post'> 
        <p><button type='submit' name='addCard' class='addCard' value='$idCard' title='Add card to deck'></button> 
        <select name='amount'> 
        <option value='1'>1</option> 
        <option value='2'>2</option> 
        <option value='3'>3</option> 
        <option value='4'>4</option> 
        </select></p> 
        </form> 
        </td> 
        <td><a href='#' class='screenshot' rel='cards/$cardname.jpg'>$cardname</a></td> 
        <td>$cost</td> 
        <td>$set</td> 
        <td>$rarity</td> 
       </tr>"; 

     } 
      print "</table>"; 
+0

Вы должны кодировать ('), на каком языке вы используете? – devundef

+0

@devundef Я не думаю, что у него проблема с кодировкой. Он вытаскивает данные из БД, но единственная цитата приводит к тому, что атрибут rel = '' преждевременно заканчивается и прерывается. Ему нужно избежать одиночной цитаты или заменить ее (как предлагает rajat singhal) – Sam

+3

Интересно, что в названии вашего вопроса вы используете двойные кавычки для значения атрибута, что именно то, что исправить вашу проблему. – MrOBrian

ответ

4

Попробуйте сопоставить значения атрибутов двойными кавычками (attrib = "value"). Тогда неважно, есть ли внутри значения одна кавычка. Кроме того, заменить двойные кавычки внутри значений с

&quot; 
+0

Не работает, поскольку я использую двойные кавычки при печати? – Nilsson

+0

Всегда HTML избегает содержимого ваших HTML-атрибутов. Вы можете уйти, не делая этого * большинства * времени, но, как вы обнаружили, не всегда. – tadman

+0

Большинство языков предоставляют вам какой-то способ избежать цитат в ваших строках. Например, в PHP вы добавляете цитату с символом обратной косой черты (\). Вот пример: 'code' echo" это строка, содержащая слово \ quoted \ "."; –

2
<td> 
    <a href='#' class='screenshot' rel='cards/<?php echo str_replace("'", '', $cardname); ?>.jpg'></a> 
</td> 

и более подходящим, как это было предложено использовать Феликс htmlspecialchars, которая преобразует все специальные chanacters ..

<td> 
    <a href='#' class='screenshot' rel='cards/<?php echo htmlspecialchars($cardname); ?>.jpg'></a> 
</td> 
+0

Не будет ли более подходящим «htmlspecialchars»? Также не обязательно, что OP использует PHP. –

+0

Если вы используете его в одинарных кавычках, вам также нужно передать флаг ENT_QUOTES (по крайней мере теперь ясно, что это PHP;)) –

+0

Не работает, уже используя двойные кавычки, чтобы это испортило код, I отредактировал мой пост со всей таблицей, чтобы сделать его более понятным, спасибо за помощь! – Nilsson

Смежные вопросы