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