[英]php json_decode removing html tags
我正在使用php json_decode解析API響應,然后使用json_encode將響應發送到客戶端。
在第三方API調用中,我得到JSON響應,其中有一個帶有html標簽和html內容的鍵。 當我打印數據時,我可以看到那些標簽,但是在json_decode之后,我看不到那些標簽,因此我無法使那些標簽保持完整。 我希望html內容按原樣進入數據庫[完全沒有任何更改]。
$result = curlGetWithHeaders("API URL", "Parameters for that URL");
$data = json_decode($result);
因此,在$result
我可以看到html標簽,而在$data
則看不到。 var_dump($data)
說它是string
。
響應為= {"array":{"id":1,"title":"Title","short_title":"abcd","description":"<ul><li>0</li><li>A</li><li>B</li><li>C</li><li>D</li>"}}
在使用json_decode
我得到的描述是不透明的html。
deals] => Array ( [0] => stdClass Object ( [deal] => stdClass Object ( [id] => 1 [title] => title [short_title] => abcd [description] => 0 • A • B • C
當您使用print_r
顯示JSON解碼對象的內容時,在瀏覽器中看到的是這樣的:
stdClass對象([array] => stdClass對象([id] => 1 [title] =>標題[short_title] => abcd [description] =>
但是,對象的有效內容(無需瀏覽器解釋HTML標記)是這樣的:
stdClass Object
(
[array] => stdClass Object
(
[id] => 1
[title] => Title
[short_title] => abcd
[description] => <ul><li>0</li><li>A</li><li>B</li><li>C</li><li>D</li>
)
)
如果您要求瀏覽器顯示頁面源,則可以清楚地看到它。
您的description
字段包含一個碰巧是HTML的純字符串,僅此而已。
如果您想在不做任何修改的情況下將JSON解碼的數據存儲在數據庫中, 那么 , 什么也不做 ,就可以得到您想要的。
現在,如果要在瀏覽器中顯示實際的HTML代碼,則必須轉義HTML特殊字符,如下所示:
echo htmlentities (print_r (json_decode ($json), true));
請注意,您應該首先獲取print_r
結果,然后才轉義HTML。
不確定是否有幫助,但是...
$p = '<p> This is some text</p>';
$j = json_encode(urlencode($p));
print_r($j);
echo '<br>';
$jd = json_decode(urldecode($j));
print_r($jd);
使用htmlspecialchars()函數先對數據進行編碼
並使用htmlspecialchars_decode()函數取回結果
<?php
$result = htmlspecialchars({"array":{"id":1,"title":"Title","short_title":"abcd","description":"<ul><li>0</li><li>A</li><li>B</li><li>C</li><li>D</li>"}});
使用它,何時需要返回html內容
htmlspecialchars_decode()以獲取html內容
$result = '{"array":{"id":1,"title":"Title","short_title":"abcd","description":"<ul><li>0</li><li>A</li><li>B</li><li>C</li><li>D</li>"}}';
$data = json_decode($result);
print "<pre>";
print_r($data);
print "</pre>";
在這里,您的json字符串已經轉換為數組,其中“描述”包含html標簽。 使用print_r,您將能夠在瀏覽器解釋時看到html標記,並且可以看到html生成的結果。
現在,如果您想使用HTML 插入文本,則可以使用如下所示的htmlentities 。
print htmlentities($data->array->description);
輸出:
<ul><li>0</li><li>A</li><li>B</li><li>C</li><li>D</li>
不完全是我的問題的答案,但是它可以幫助某人,無論我存儲在數據庫中的內容是完美的。 問題是在顯示它時。 因此,現在我可以使用<pre></pre>
標記執行此操作,該標記將在顯示時格式化數據。 它只是為我工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.