PHP | json_encode删除html标签

时间:2017-01-26 07:54:00

标签: php html arrays json multidimensional-array

我有一个大的多维数组,有多个字符串值包含带有html标记和属性的字符串。

但是当我使用json_encode时,我得到的输出会删除一些标记。

这是我在一个单独的文件上尝试过的例子,以确定这是否真的是json编码的问题,结果证明我是对的。

<?php
$var = array(
    "type" => "<p style=\"text-align: center;\">sfds</p>"
);
   $encoded = json_encode($var);


echo '<pre>';
print_r($encoded);

如何处理这种情况?

这是我从例子中得到的结果。

{"type":"
sfds<\/p>"}

这是我从多维数组得到的结果。

{"data":[{"type":"columns","data":{"columns":[{"width":6,"blocks":[]},{"width":6,"blocks":[]}],"preset":"columns-6-6"}},{"type":"columns","data":{"columns":[{"width":6,"blocks":[{"type":"heading","data":{"text":"
I am the Heading<\/p>","mce_0":"

I am the Heading<\/p>"}},{"type":"heading","data":{"text":"

sfds<\/p>","mce_1":"

sfds<\/p>"}}]},{"width":6,"blocks":[{"type":"text","data":{"text":"

\n
Im Text<\/div>\n<\/div>","mce_2":"
\n
Im Text<\/div>\n<\/div>"}}]}],"preset":"columns-6-6"}},{"type":"text","data":{"text":"
\n
Im just a text<\/div>\n<\/div>","mce_3":"
\n
Im just a text<\/div>\n<\/div>"}}]} 

= - = - = - = - = - = -

更新:生成的HTML源代码我正在尝试编码的数组变量的var_dump代码。

<pre> after set2_decode:<br>array(1) {
  ["data"]=&gt;
  array(3) {
    [0]=&gt;
    array(2) {
      ["type"]=&gt;
      string(7) "columns"
      ["data"]=&gt;
      array(2) {
        ["columns"]=&gt;
        array(2) {
          [0]=&gt;
          array(2) {
            ["width"]=&gt;
            int(6)
            ["blocks"]=&gt;
            array(0) {
            }
          }
          [1]=&gt;
          array(2) {
            ["width"]=&gt;
            int(6)
            ["blocks"]=&gt;
            array(0) {
            }
          }
        }
        ["preset"]=&gt;
        string(11) "columns-6-6"
      }
    }
    [1]=&gt;
    array(2) {
      ["type"]=&gt;
      string(7) "columns"
      ["data"]=&gt;
      array(2) {
        ["columns"]=&gt;
        array(2) {
          [0]=&gt;
          array(2) {
            ["width"]=&gt;
            int(6)
            ["blocks"]=&gt;
            array(2) {
              [0]=&gt;
              array(2) {
                ["type"]=&gt;
                string(7) "heading"
                ["data"]=&gt;
                array(2) {
                  ["text"]=&gt;
                  string(23) "<p>I am the Heading</p>"
                  ["mce_0"]=&gt;
                  string(23) "<p>I am the Heading</p>"
                }
              }
              [1]=&gt;
              array(2) {
                ["type"]=&gt;
                string(7) "heading"
                ["data"]=&gt;
                array(2) {
                  ["text"]=&gt;
                  string(39) "<p style="text-align: center;">sfds</p>"
                  ["mce_1"]=&gt;
                  string(39) "<p style="text-align: center;">sfds</p>"
                }
              }
            }
          }
          [1]=&gt;
          array(2) {
            ["width"]=&gt;
            int(6)
            ["blocks"]=&gt;
            array(1) {
              [0]=&gt;
              array(2) {
                ["type"]=&gt;
                string(4) "text"
                ["data"]=&gt;
                array(2) {
                  ["text"]=&gt;
                  string(59) "<div>
<div style="text-align: center;">Im Text</div>
</div>"
                  ["mce_2"]=&gt;
                  string(59) "<div>
<div style="text-align: center;">Im Text</div>
</div>"
                }
              }
            }
          }
        }
        ["preset"]=&gt;
        string(11) "columns-6-6"
      }
    }
    [2]=&gt;
    array(2) {
      ["type"]=&gt;
      string(4) "text"
      ["data"]=&gt;
      array(2) {
        ["text"]=&gt;
        string(65) "<div>
<div style="text-align: right;">Im just a text</div>
</div>"
        ["mce_3"]=&gt;
        string(65) "<div>
<div style="text-align: right;">Im just a text</div>
</div>"
      }
    }
  }
}
</pre>

3 个答案:

答案 0 :(得分:1)

您的浏览器会隐藏所有标签。 使用htmlentities()查看所有代码

print_r(htmlentities($encoded));

答案 1 :(得分:1)

我认为很有帮助。请使用print_r然后转义你的HTML。

echo htmlentities (print_r (json_encode($var), true));  

我希望这有帮助!

答案 2 :(得分:0)

将JavaScript放入JSON响应中并不是最佳做法,最佳做法是在前端精确构建html并只调用已构建的html中的数据。但是请注意,你不能在json响应中使用纯html。它通常是逃脱的。所以你必须确保你的html正确构建。 这是一篇很好的文章来帮助你。

https://www.thorntech.com/2012/07/4-things-you-must-do-when-putting-html-in-json/