首页 > 解决方案 > JSON-LD 和内容中的引号

问题描述

我在通过 Google 结构化数据测试工具验证 JSON-LD 代码时遇到问题。我的文章文本取自 MySQL 数据库,并通过 php 脚本按照以下几行放入 JSON-LD 结构:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "Article",
    ...
    "articleBody": "<?php echo article content here ?>",
    ...
}

问题是如果文章文本包含引号 (") 那么它们与 JSON-LD 块语法冲突并导致验证错误。基本上文章内容中 (") 的第一个实例表示文章正文的结尾和下一个 ( ") 导致语法错误。

我唯一的想法是使用 php 预处理文章内容并删除 (") 符号。这工作正常,但看起来很人为:

    "articleBody": "<?php echo str_replace( '"', '', article content here) ?>",

有没有可用的标准解决方法?

标签: phpjson-ld

解决方案


正如 essexboyracer 已经说过的,您正在寻找函数addslashes()

https://www.php.net/manual/en/function.addslashes.php

返回一个在需要转义的字符之前添加反斜杠的字符串。这些字符是:

单引号 (') 双引号 (") 反斜杠 () NUL(NUL 字节)


推荐阅读