javascript - PHP Laravel 未解码 MySQL 表中检索到的项目中的特殊字符 &
问题描述
我面临一个关于解码特殊字符的问题,特别是 & 字符。
设置
前端:Angular-6/Typescript
后端:PHP/Laravel 和 Eloquent
数据库:MySQL
浏览器:铬
问题
使用 Javascript,我使用简单的基于文本的输入表单以 JSON 格式发送数据。测试时,我使用“Me & You”作为测试字符串。但是,在浏览器的网络选项卡中,我注意到 JSON 数据采用以下形式
book: {
title: "Me & You"
...
}
PHP/Laravel 将这个字符串保存在数据库中 ( Me & You
)。由于我也在检索标题,甚至我的前端文本字段也会显示Me & You
。
要求的行为
无论如何它都应该保存字符串 ( Me & You
) 但在检索条目之前,它应该转义特殊字符,以便我收到Me & You
.
任何其他建议也将不胜感激。我只需要转义 & 字符。
我已经尝试过的
我尝试了以下方法来解决问题,但无济于事:
- 在使用 Laravel 的
save
函数保存模型之前,我使用htmlspecialchars_decode()
解码字符串,但它仍然Me & You
在数据库和前端给我。
$title= htmlspecialchars_decode($title);
- 我试过
html_entity_decode
了,但仍然没有运气。
$title= html_entity_decode($title);
- 我也在检索标题,所以我想不是解码字符串,而是让它保存字符串,就像它在表中一样。但是当我检索标题时,我会对它们进行解码,然后通过响应将它们返回给前端。
foreach ($user->books as &$book) {
$book['title'] = urldecode(($book['title']));
}
但我仍然收到Me & You
。请注意,这里我使用的是引用,因为起初我认为 foreach 循环正在创建一个新的临时变量,而不是更改原始值。
- 在javascript中,我尝试使用
encodeURIComponent()
book.title = encodeURIComponent(book.title);
这给了我Me%20%26%20You
。
在 PHP 中,我然后尝试使用urldecode()
等,htmlspecialchars_decode()
但我仍然得到Me & You
.
任何帮助,将不胜感激。
谢谢你。
解决方案
推荐阅读
- python - 检查列表中的空白字符串
- javascript - 我如何在这个 JS 打字动画上添加比例、不透明度和 translateZ 效果,就像在anime.js 的第二个示例中一样
- flutter - 如果 TextSpan 包含不同的语言,则 TextSpan 的背景具有不同的高度
- javascript - 转换 JSON 对象列表
- html - 更改替换和排除多行 html 代码
- c - 如何拆分子目录名称?
- android - 如何在recyclerview中创建连接2个不同项目的垂直线
- java - 更有效的 JButton 制作方法
- c# - EF 中的通用实体映射
- csv - Julia:可视化以 csv 格式保存的图像