2014-10-19 49 views
0

我希望有人可以給我一些關於這個問題的建議。我要打印出對象的數組在下面的格式的HTML數據屬性...將對象數組打印到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, ",") . "]"; 

這個工作直到值中有雙引號和單引號,這就是爲什麼我加了addslashes()和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釐米)」 - 看到額外的單引號,但這並不出現在數據庫中

任何建議,以固定或用另一種方式。更好的將是一個很大的幫助。提前

感謝

回答

0

嘗試增加對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) 
1


您可以使用PHP函數json_encode($array)要做到這一點,它會逃避所有特價字符,並在客戶端正確解碼
希望它有幫助