我有一组从database
加载的checkboxes
。这些都是歌曲,所以有些歌曲中有撇号。当点击submit
与method=post
然后一切都被张贴在下一页,然而歌曲与撇号是不完整的。它正好在撇号前断开
示例:Can't Breathe
变为Can
if(isset($_POST['submit'])){
if(isset($_POST['chk_album'])){
foreach($_POST['chk_album'] as $key=>$val){
echo $val;
}
}
}
HTML: <input type="checkbox" name="chk_album[]" data-album="echo" value="Can't Breathe">
SQL: $dbQuery = "SELECT * FROM $album";
$dbResult = mysqli_query($dbCon, $dbQuery) or die("Error");
while ($row = mysqli_fetch_assoc($dbResult)) {
$id = $row["Id"];
$title = addslashes($row["Title"]);
$album = $row["Album"];
echo "<input type='checkbox' name='chk_album[]' value='" . $title . "' />";
}
我确实试着在谷歌上寻找答案,但找不到任何具体的问题。我想。
当获取文本字符串并将其插入HTML文档时,使用htmlspecialchars()
使其安全并转换具有特殊含义的字符
PHP假定您将用"
分隔属性值,因此默认情况下它不会转换'
。你可以通过传递一个额外的标志来处理这个问题。
$html = htmlspecialchars($text, ENT_QUOTES);
:
$html_title = htmlspecialchars($title, ENT_QUOTES);
echo "<input type='checkbox' name='chk_album[]' value='" . $html_title . "' />";
(并删除$title = addslashes($row["Title"]);
,因为addslashes
从来都不是一个很好的解决方案,只是把奇怪的字符在你的数据在这里)。
试试这个:
<input type="checkbox" name="chk_album[]" data-album="echo" value="Can''t Breathe">