我在通过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) ?>",
有没有可用的标准解决方法?
答案 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() ) ) ) ?>",