簡體   English   中英

將對象數組輸出到HTML數據屬性中

[英]Printing out array of objects into a HTML data attribute

我希望有人可以給我一些有關此問題的建議。 我必須以以下格式將對象數組打印為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)進行此操作,它將轉義所有特殊字符,並在客戶端正確解碼
希望能幫助到你

嘗試like so: htmlentities($v, ENT_QUOTES)htmlentities($v)上添加ENT_QUOTES like so: htmlentities($v, ENT_QUOTES) 那應該轉換您的引號,以便它們不干擾HTML 處理完之后(將其轉換回去,您必須在解碼器上輸入ENT_QUOTES

結果如下:

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

轉換:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM