2017-05-24 8 views
1

コードこれら2つのコードスニペットの機能的な違いは何ですか?

<!--?php include('json-ld.php'); ?--><script type="application/ld+json">// <![CDATA[ 
<?php echo json_encode($payload); ?> 
// ]]></script> 

<?php include('json-ld.php'); ?><script type="application/ld+json"> 
<?php echo json_encode($payload); ?> 
</script> 

のこれら二つの断片間の機能の違いは、私の目的は私のWordPressのサイトへ(schema.org構造化データを含む)をJSON-LDファイルを適用することは何ですか。最初のコードはthis pageから取られ、私が必要とすることを行うと主張しています。しかし、私はなぜ多くのコメントでスニペットを投稿するのか理解できません。私がHTMLとJSのコメントについて理解しているところから、コードは機能的にはボトムコードと同じように見えます。私は、この文法について何か誤解していないことを自分自身に保証するためにここに投稿しています。

おそらく、コメント付きコードを使用するためのセキュリティ目的がありますか?もしそうなら、私はセキュリティ面でベストプラクティスを実践することに興味があります。

ありがとうございました。

+0

「Curious XXXX syntax」は曖昧で、特定の問題はありません。タイトルを変更する必要があります。それはあなたのポストを読む前に超誤解を招くようにします。タイトルは「私に投票してください」と叫びます。通常、初心者の間違い。私はダウン票があなたのタイトルであると確信しています。アップ票は実際にあなたの投稿を読む人です。 ;) – rottenoats

+0

https://stackoverflow.com/questions/66837/when-is-a-cdata-section-necessary-within-a-script-tag – inarilo

+0

@rottenoatsこのコメントをいただきありがとうございます。私は確かにここにある投稿は質問の形である必要があることを知っています。しかし何らかの理由で、この特定の投稿を作成するときに知識が私を逃した。 – cag8f

答えて

2

CDATAは文字データの略であり、これらの文字列の間のデータにはXMLマークアップとして解釈できるデータが含まれていますが、そうであってはならないことを示します。これは、htmlタグなどをXMLコードを壊さずに使用できるようにするためのものです。各HTMLタグはxmlの子ノードとして表されます。 CDATAの "コメント"を使用すると、htmlタグを子ノードではなく文字列値と見なすようxmlに指示します。

最初の行について:<!--?php include('json-ld.php'); ?-->これはファイルを含んでいません。これはオリジナルの著者の誤字かもしれません。あなたのコードがそれなしで動作するなら、おそらく削除するのが安全です。 )

+0

ありがとう。あなたの回答は、私がコードに残すべきことを明確にしました:<![CDATA []]。しかし、1行目と3行目に現れる二重スラッシュ(//)はどうでしょうか?それらの機能は何ですか?私が理解するように、彼らはJavaScriptのコメント指定子です。もしそうなら、彼らは<![CDATA [および]]をコメントしているようです。編集:私はhttps://stackoverflow.com/questions/66837/when-is-a-cdata-section-necessary-within-a-script-tagを読んでいます。これらの構文の使用について議論しているようです。 – cag8f

+0

編集2:OK私はこれについてはっきりしていると思います。 – cag8f

1

私の見たところでは、<?php include('json-ld.php'); ?>の潜在的な出力はHTMLとして扱われません。

ほとんどの場合、<?php include('json-ld.php'); ?>に出力がないので、<!-- <?php include('json-ld.php'); ?> --><!---->となります。しかし、潜在的なPHPの通知やエラーがランダムにポップするとコメントが終了し、DOMが破られることはありません。

+1

問題を除いて、それは有効なオープン/クローズphpタグではありません。実際にはファイルを含めずに、文書の先頭にあるincludeステートメントを効果的にコメントしています。 –

+0

あなたのポイントはまだ有効ですが - もしincludeステートメントが修正された場合。 –

関連する問題