3

我的页面上有一张表格,显示卡名、费用、套装、稀有度。此信息来自数据库表。当用户将鼠标悬停在表格中的任何卡片名称上时,卡片会弹出一个图像,一旦鼠标移开,图像就会关闭(为此使用 jQuery 脚本)。

这是卡片名称单元格的代码:

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

一切正常,除非 $cardname 包含 ' 这会弄乱代码并阻止图像显示(卡名不工作的示例可能是“Faith's Shield”)。我尝试使用 ´ 代替,但这似乎也不起作用。

我知道这可能不是实现我想要做的事情的最佳方式,但我对网络编程很陌生,这似乎是一个让它工作的简单技巧。

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>";
4

2 回答 2

4

尝试用双引号将属性值括起来(attrib="value")。那么值中是否有单引号就无关紧要了。此外,将值内的双引号替换为

&quot;
于 2012-07-24T18:02:09.447 回答
2
<td>
    <a href='#' class='screenshot' rel='cards/<?php echo str_replace("'", '', $cardname); ?>.jpg'></a>
</td>

更合适的是,正如 Felix 所建议的那样使用htmlspecialchars,这将转换所有特殊字符..

<td>
    <a href='#' class='screenshot' rel='cards/<?php echo htmlspecialchars($cardname); ?>.jpg'></a>
</td>
于 2012-07-24T18:04:43.447 回答