每当用户使用php向用户配置文件输入内容时,我都会使用字符串过滤器将其转换为html实体。
当用户晚点编辑他们的个人资料时...不确定我是否正确这样做。但是我使用php循环遍历所有字段并设置其后续“键”,这是输入名称,其值在db中。
<?php php foreach ($usermeta as $key=>$value){ ?>
<script> $("<? echo $key; ?>").val("<? echo $val ;?>"); </script>
<?php } ?>
这个工作很棒。但是html实体没有被转换回来?我该怎么做呢?当你将html实体输入撇号或逗号时,有没有办法在不破坏jquery的情况下完成它?
我不能只将每个值都回显到输入值,因为在某些情况下我有下拉列表,据我所知...通过php循环遍历您的值并通过jquery设置值是设置下拉列表的唯一方法。
答案 0 :(得分:0)
要回答最初的问题,在回显事物之前需要decode the entities:
$("<? echo $key; ?>").val("<? echo(html_entity_decode($val)); ?>");
至于这样做是否是一个好主意,不,不是真的。输出表单时,可以直接在输入值中设置,如:
<input type="text" name="foo" value="<?php echo(html_entity_decode($usermeta->foo)); ?>">
另一种选择是对您的$usermeta
进行JSON编码并在脚本标记中进行设置。然后让javascript更新字段。
答案 1 :(得分:0)
javascript中的html_entity_decode函数
let html_entity_decode = function(str) {
return str.replace(/&#(x[0-9a-fA-F]+|\d+);/g, function(match, dec) {
return String.fromCharCode(dec.substr(0, 1) == 'x' ? parseInt(dec.substr(1), 16) : dec);
})
};
例如使用
alert(html_entity_decode('高级程序设计'))