3

ページに、カード名、コスト、セット、レアリティを示す表があります。この情報は、データベース テーブルから取得されます。ユーザーがテーブル内の任意のカード名にカーソルを合わせると、カードの画像がポップアップ表示され、マウスを離すとすぐに画像が閉じます (これには jQuery スクリプトを使用)。

cardname セルのコードは次のようになります。

<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 usehtmlspecialcharsで示唆されているように、すべての特別なチャナクターを変換します..

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