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 块语法冲突并导致验证错误。基本上文章内容中 (") 的第一个实例表示文章正文的结尾和下一个 ( ") 导致语法错误。
我唯一的想法是使用 php 预处理文章内容并删除 (") 符号。这工作正常,但看起来很人为:
"articleBody": "<?php echo str_replace( '"', '', article content here) ?>",
有没有可用的标准解决方法?
解决方案
正如 essexboyracer 已经说过的,您正在寻找函数addslashes()
https://www.php.net/manual/en/function.addslashes.php
返回一个在需要转义的字符之前添加反斜杠的字符串。这些字符是:
单引号 (') 双引号 (") 反斜杠 () NUL(NUL 字节)
推荐阅读
- sql - MS Access 查询以返回表中具有多条记录的每个人的最近日期
- powershell - 尝试解压缩特定位置“D:\var\logs\”中不存在的 zip 文件时处理异常
- javascript - 如何在NodeJS的环回框架中将结果作为没有任何字符串前缀的唯一对象
- angular - Angular 8 Asp.net核心项目中的Bootstrap 4轮播不会自动更改图像
- python - 如何有效地将 int 存储到字节中?
- css - CSS webcomponent 作为页脚
- javascript - 通过 jquery 发现错误值高度 div。为什么?
- html - 指定网格中的行数和列数
- typescript - Vuetify 数据表 Crud 操作 typescript 类组件示例?
- android - 如何在 TextView 中以编程方式启用/禁用自动文本滚动?