这两段代码之间的功能区别是什么?

时间:2017-05-24 08:44:01

标签: javascript html json wordpress

这两段代码之间的功能区别是什么

<!--?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>

我的目标是将JSON-LD文件(包含schema.org结构化数据)应用到我的WordPress站点。第一个代码取自this page,并声称可以做我需要的。但我不明白为什么作者会发布一个包含这么多评论的片段。根据我对HTML和JS注释的理解,代码似乎在功能上等同于底部代码。我在这里发帖是为了向自己保证,我并没有误解这种语法。

使用注释代码可能有安全目的吗?如果是这样,我会对安全方面的最佳实践感兴趣。

感谢。

2 个答案:

答案 0 :(得分:2)

CDATA 代表字符数据,这意味着这些字符串之间的数据包含可以解释为XML标记但不应该被解释为XML标记的数据。这样就可以在不破坏xml代码的情况下使用html标签等等 - 每个html标签都表示为xml的子节点。通过使用CDATA“注释”,您告诉xml将html标记视为字符串值,而不是子节点。

关于第一行:<!--?php include('json-ld.php'); ?-->这不包括文件 - 这可能是原作者的一个错字。如果您的代码在没有它的情况下工作,则删除可能是安全的;否则,修理它;)

答案 1 :(得分:1)

从我看到的情况来看,纯粹是<?php include('json-ld.php'); ?>的潜在输出不被视为HTML。

由于大多数情况下<?php include('json-ld.php'); ?>中没有输出,<!-- <?php include('json-ld.php'); ?> -->只执行<!---->。但是随机弹出的潜在PHP通知或错误将结束评论而不会破坏DOM。