簡體   English   中英

php json_decode刪除html標簽

[英]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] =>

  • 0
  • 一種
  • C
  • d

但是,對象的有效內容(無需瀏覽器解釋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.

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