【问题标题】:Printing out array of objects into a HTML data attribute将对象数组打印到 HTML 数据属性中
【发布时间】:2014-10-19 21:40:16
【问题描述】:

我希望有人能给我一些关于这个问题的建议。我必须以下面的格式将一组对象打印到 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 的数据示例如下。当数据被发送到数据库时它很好,但是当从数据库中检索数据时,我最终会在字符串上加上一个额外的单引号,这反过来又与我的选项值不匹配等等。

样本数据(来自萤火虫所以没有实体)...

[{ 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 cm)' - 请参阅额外的单引号,但这不会出现在数据库中。

任何解决此问题的建议或以另一种更好的方式做这件事都会有很大帮助。

提前致谢

【问题讨论】:

    标签: javascript php html arrays object


    【解决方案1】:


    您可以使用 PHP 函数 json_encode($array) 来执行此操作,它将转义所有特殊字符,并在客户端正确解码
    希望对你有帮助

    【讨论】:

      【解决方案2】:

      尝试在htmlentities($v) like so: htmlentities($v, ENT_QUOTES) 上添加ENT_QUOTES。这应该转换你的报价,所以它们不会干扰HTML。当您处理它时(将其转换回来,您必须在解码时使用ENT_QUOTES

      这是结果:

      <?php
      $v  =   "5'3\" (160 cm)";
      echo htmlentities($v, ENT_QUOTES);
      ?>
      

      转换:

      5&#039;3&quot; (160 cm)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-05
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-18
        相关资源
        最近更新 更多