2012-07-24 51 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