JSON-LD 和内容中的引用

JSON-LD and quotes in the content

我在使用 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) ?>",

是否有可用的标准解决方法?

谢谢乌诺尔。我最终得到了以下运行良好的脚本:

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

正如 essexboyracer 所说,您正在寻找函数 addslashes()

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

Returns a string with backslashes added before characters that need to be escaped. These characters are:

single quote (') double quote (") backslash () NUL (the NUL byte)