JSON-LD和内容中的引号

时间:2019-05-26 09:05:31

标签: php 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块语法冲突并导致验证错误。基本上,文章内容中(”)的第一个实例指示articleBody和下一个(“)会导致语法错误。

我唯一的想法是使用php预处理文章内容并删除(“)符号。这很好,但看起来很虚假:

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

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

2 个答案:

答案 0 :(得分:1)

正如essexboyracer已经说过的,您正在寻找功能addlashes()

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

返回一个字符串,在需要删除的字符之前加上反斜杠 逃脱。这些字符是:

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

答案 1 :(得分:0)

谢谢你,乌尔。我最终得到了下面的脚本,它很好用:

"articleBody": "<?php echo preg_replace( '/\s+/', ' ', str_replace( '"', '\"', wp_strip_all_tags( get_the_content() ) ) ) ?>",