我正在开发一个使用PHP的网站,它可以自动在海报上创建。用户可以选择在php文件中定义的颜色主题,如下所示:
$f_1 =array(
"1" => "#1e354c ",
"2" => "#ebcc85",
"3" => "#133745"
);
$f_3 =array(
"1" => "#1e354c",
"2" => "#b5cd9c",
"3" => "#133745"
);
$themes = array(
"Tema 1" => json_encode($f_1),
"Tema 2" => json_encode($f_3)
);
echo "<select class='form-control' id='themeselect' onchange='updatePoster()'>";
foreach($themes as $cc => $name) {
echo '<option value="' . $name . '">' . $cc . '</option>';
}
echo "</select>";$f_1的JSON生态化是这样的;
"{\"1\":\"#1e354c \",\"2\":\"#ebcc85\",\"3\":\"#133745\"}"问题是"Tema 1“的值是"{”。
我也尝试使用serialize()而不是json_encode(),但这也不起作用。
发布于 2015-01-23 15:59:35
"在由"字符分隔的属性值中具有特殊意义。
在插入HTML文档之前,使用htmlspecialchars()将非HTML数据转换为HTML。
foreach($themes as $cc => $name) {
?>
<option
value="<?php echo htmlspecialchars($name); ?>">
<?php echo htmlspecialchars($cc); ?>
</option>
<?php
}
?>发布于 2015-01-23 15:59:16
json_encode返回一个字符串。作为一名开发人员,正确使用它是您的工作。虽然\"是在PHP中用双引号转义双引号的正确方法,但对于HTML,情况并非如此。"是。
因此,我打赌生成的HTML如下所示:
<select ...>
<option value="{"1":...>Tema1</option>
</select>注意为什么updatePoster告诉您所选的值是"1"
发布于 2015-01-28 21:18:51
您还可以更改这个echo语句:
echo '<option value="' . $name . '">' . $cc . '</option>';至
echo "<option value='$name'>$cc</option>";因此,该值由单引号而不是双引号分隔。这也能解决你的问题。
https://stackoverflow.com/questions/28113673
复制相似问题