我有一组checkboxes
从database
加载。这些都是歌曲,所以有些歌曲中有撇号。用submit
点击method=post
后,所有内容都会在下一页上发布,但带撇号的歌曲不完整。它在撇号之前就已经破裂了。
例如:Can't Breathe
变为Can
PHP:
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 . "' />";
}
我确实尝试在Google上寻找答案,但找不到任何针对我问题的内容。我想。
答案 0 :(得分:2)
当获取文本字符串并将其插入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
对任何事情来说都不是一个好的解决方案,只是在这里将奇怪的字符放入数据中。)
答案 1 :(得分:-1)
试试这个:
<input type="checkbox" name="chk_album[]" data-album="echo" value="Can\'t Breathe">