我希望有人可以给我一些有关此问题的建议。我必须以以下格式将对象数组打印为HTML数据属性...
[{value:'some_val', text:'some_val'}, {value:'some_val', text:'some_val'}]
我的PHP代码生成的是以下字符串...
$obj = "[";
foreach ( $vals AS $key=>$v ){
$key = addslashes( htmlentities($key) );
$v = addslashes( htmlentities($v) );
$obj .= "{ value:'{$key}',text:'{$v}' },";
}
$obj = rtrim($obj, ",") . "]";
直到值中包含双引号和单引号,这都可以正常工作,这就是为什么我添加了addlashes()和htmlentities()的原因。
下面是我打印的破坏HTML的数据示例。当数据发送到数据库时很好,但是当从数据库中检索数据时,我最终在字符串上加了一个单引号,这又与我的选项值等不匹配。
样本数据(来自Firebug,因此没有实体)...
[{ value:'< 5\' (< 152 cm)',text:'< 5\' (< 152 cm)' },{ value:'5\'0" (152 cm)',text:'5\'0" (152 cm)' },{ value:'5\'1" (155 cm)',text:'5\'1" (155 cm)' },{ value:'5\'2" (157 cm)',text:'5\'2" (157 cm)' },{ value:'5\'3" (160 cm)',text:'5\'3" (160 cm)' },{ value:'5\'4" (163 cm)',text:'5\'4" (163 cm)' },{ value:'5\'5" (165 cm)',text:'5\'5" (165 cm)' },{ value:'5\'6" (168 cm)',text:'5\'6" (168 cm)' },{ value:'5\'7" (170 cm)',text:'5\'7" (170 cm)' },{ value:'5\'8" (173 cm)',text:'5\'8" (173 cm)' },{ value:'5\'9" (175 cm)',text:'5\'9" (175 cm)' },{ value:' 5\'10" (178 cm)',text:' 5\'10" (178 cm)' },{ value:'5\'11" (180 cm)',text:'5\'11" (180 cm)' },{ value:'6\'0" (183 cm)',text:'6\'0" (183 cm)' },{ value:'6\'1" (185 cm)',text:'6\'1" (185 cm)' },{ value:'6\'2"(188 cm)',text:'6\'2"(188 cm)' },{ value:'6\'3" (191 cm)',text:'6\'3" (191 cm)' },{ value:'6\'4" (193 cm)',text:'6\'4" (193 cm)' },{ value:'6\'5" (196 cm)',text:'6\'5" (196 cm)' },{ value:'6\'6" (198 cm)',text:'6\'6" (198 cm)' },{ value:'6\'7" (201 cm)',text:'6\'7" (201 cm)' },{ value:'6\'8" (203 cm)',text:'6\'8" (203 cm)' },{ value:'6\'9" (206 cm)',text:'6\'9" (206 cm)' },{ value:' 6\'10" (208 cm)',text:' 6\'10" (208 cm)' },{ value:'6\'11" (211 cm)',text:'6\'11" (211 cm)' },{ value:'7\' 0" (213 cm)',text:'7\' 0" (213 cm)' },{ value:'>7\' (> 213 cm)',text:'>7\' (> 213 cm)' }]
这将在data-source =“”属性中。
从数据库返回的值将类似于5'3“(160厘米)'-请参阅额外的单引号,但这不会出现在数据库中。
任何建议来解决或更好地做这将是一个很大的帮助。
提前致谢
最佳答案
您可以使用PHP函数json_encode($array)
进行此操作,它将转义所有特殊字符,并在客户端正确解码
希望能帮助到你