2017-01-26 10 views
-2

htmlタグと属性を持つ文字列を含む複数の文字列値がある大きな多次元配列があります。PHP | json_encodeが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>"}}]} 

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

アップデート:私はエンコードしようとしている配列変数ののvar_dumpの生成されたHTMLソースコード。

<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> 
+1

ブラウザで見る代わりに、生成されたHTMLを開きます。または、コンソールでスクリプトを実行します。 –

+0

@u_mulder あなたの意見は分かりませんでした。エンコードされたjsonのdosentがうまく動作したら、ブラウザでデータを見るのはどういうものですか?私はjsonが必要ですが、そのjsonはhtmlタグにも属性を含める必要があります。 と私はブラウザで試した配列はうまく動作し、HTMLタグはブラウザで表示されたときに実装されるように直接見ることができません。 –

+0

https://3v4l.org/XWI43 –

答えて

1

お使いのブラウザは、すべてのタグを非表示にします。 JSONレスポンスでHTMLを置くための最良のプラクティスではありませんすべてのタグ

print_r(htmlentities($encoded)); 
+0

htmlentitiesは、文字列配列や多次元配列に対しても機能します。 だから私はこのようにしてみました。 'ob_start(); \t \t \t \t \t \t print_r($ set2_decode); \t \t \t \t \t \t $ buffer = ob_get_clean(); \t \t \t \t \t \tエコー "

 after set2_decode = ".htmlentities($buffer)."
"; ' –

0

を参照するには 使用htmlentities()、ベストプラクティスは、accuallyフロントエンドでHTMLを構築し、ちょうど、すでに構築されたHTML形式でデータを呼び出すことです。どのようにあなたはjsonの応答で純粋なhtmlを持つことができないことに注意してください。それは通常エスケープされます。だから、あなたのhtmlが適切に構築されていることを確認しなければなりません。 これはあなたを助ける良い記事です。

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

1

私はにhtmlentitiesが助けになると思います。 print_rを使い、あなたのhtmlをエスケープしてください。

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

この情報が役立ちますようお願いいたします。

関連する問題