2012-07-24 56 views
3

我在我的頁面上有一個表顯示cardname,成本,設置,稀有度。這些信息來自數據庫表。當用戶將鼠標懸停在表格中的任何卡名稱上時,會彈出卡片的圖像,一旦鼠標移開,圖像就會關閉(使用jQuery腳本進行此操作)。問題與rel ='imageName'當名稱包含單引號

這是cardname小區的碼怎麼看:

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

一切正常時,$ cardname含有「,這打亂了代碼,並可以防止圖像顯示cardname的(例如不工作,除了能成爲「信仰之盾」)。我試圖使用',而不是,但似乎也沒有工作。

我知道這可能不是實現我想要做的最好的方式,但我對web編程頗爲陌生,這似乎是一個簡單的技巧,使其工作。

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 2012-07-24 18:01:38

+0

@devundef我不認爲他有編碼問題。他從數據庫中提取數據,但是單引號導致rel =''屬性提前終止並中斷。他需要避開單引號或替換它(如rajat singhal所示) – Sam 2012-07-24 18:08:39

+3

有趣的是,在問題的標題中,對於屬性值使用雙引號,這正是解決問題的方法。 – MrOBrian 2012-07-24 18:08:41

回答

4

嘗試圍繞使用雙引號的屬性值(attrib =「value」)。那麼,價值內是否有單引號並不重要。此外,與

&quot; 
+0

因爲在打印時使用雙引號,所以不起作用? – Nilsson 2012-07-24 18:39:26

+0

總是HTML轉義您的HTML屬性的內容。大部分時間你都可以逃避,但正如你發現的那樣,並非總是如此。 – tadman 2012-07-24 19:36:59

+0

大多數語言都爲您提供了一些方法來避免字符串中的引號。例如,在PHP中,您需要在反斜槓(\)字符前添加引號。下面是一個例子: 'code' echo「這是一個包含」quoted「字的字符串。 – 2012-07-27 04:35:37

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。 – 2012-07-24 18:06:02

+0

如果你在單引號內使用它,你還必須通過'ENT_QUOTES'標誌(至少它現在已經清楚它是PHP;)) – 2012-07-24 18:26:47

+0

不起作用,已經使用雙引號,所以這弄亂了代碼,I用整張桌子編輯我的帖子,使其更清楚,謝謝你的幫助! – Nilsson 2012-07-24 18:29:30