Javascript PHP Laravel不解码MySQL表中检索到的项目中的特殊字符和
我面临一个关于特殊字符解码的问题,特别是符号(&)字符 设置 前端:Angular-6/Typescript 后端:PHP/Laravel和雄辩 数据库:MySQL 浏览器:Chrome 问题 使用Javascript,我使用一个简单的基于文本的输入表单,以JSON格式发送数据。测试时,我使用“我和你”作为测试字符串。但是,在浏览器的网络选项卡中,我注意到JSON数据采用Javascript PHP Laravel不解码MySQL表中检索到的项目中的特殊字符和,javascript,php,angular,laravel,eloquent,Javascript,Php,Angular,Laravel,Eloquent,我面临一个关于特殊字符解码的问题,特别是符号(&)字符 设置 前端:Angular-6/Typescript 后端:PHP/Laravel和雄辩 数据库:MySQL 浏览器:Chrome 问题 使用Javascript,我使用一个简单的基于文本的输入表单,以JSON格式发送数据。测试时,我使用“我和你”作为测试字符串。但是,在浏览器的网络选项卡中,我注意到JSON数据采用 book: { title: "Me & You" ... } PHP/Lar
book: {
title: "Me & You"
...
}
PHP/Laravel将此字符串保存为数据库中的字符串(Me&;You
)。因为我也在检索标题,所以即使是我的前端文本字段也会显示Me&;您也可以
要求的行为
它应该以任何方式保存字符串(Me&;You
),但在检索条目之前,它应该转义特殊字符,以便我接收Me&You
任何其他建议也将不胜感激。我只需要避开符号和字符
我已经尝试过的
我尝试了以下方法来解决这个问题,但没有成功:
save
函数保存模型之前,我使用htmlspecialchars\u decode()
对字符串进行解码,但它仍然提供me&;您可以在数据库和前端中使用
html\u entity\u decode
,但还是没有成功Me&;您可以
。请注意,这里我使用的是引用,因为起初我认为foreach循环正在创建一个新的临时变量,而不是更改原始值
encodeURIComponent()
我%20%26%20You
在PHP中,我尝试使用urldecode()
,htmlspecialchars\u decode()
等,但我仍然得到Me&;您可以
任何帮助都将不胜感激
谢谢。听起来像是双重编码的
var\u dump($title)
给出了什么?理想情况下,您应该保存unscaped,并且只在输出到DOM时转义;我在这里没有遇到这种情况:@user3783243很抱歉,但我不知道如何在laravel中使用var\u dump
,因为我在api控制器函数中进行解码。但是如果您想知道$title
的输出是什么,那么它仍然是Me&;您可以在控制台中使用
。@ChrisG确实正确。也许我应该更清楚地回答我的问题。在前端,我使用Angular6/Typescript,我得到Me&;当我查看“网络”选项卡时,您可以使用
。我尝试使用encodeURIcomponents,得到了Me%20%26%20You
,但我仍然无法在后端对其进行解码&
是一个HTML实体。不是数据库实体或任何其他东西。不要像那样在数据库中存储值。故事结束了!听起来像是双重编码的var\u dump($title)
给出了什么?理想情况下,您应该保存unscaped,并且只在输出到DOM时转义;我在这里没有遇到这种情况:@user3783243很抱歉,但我不知道如何在laravel中使用var\u dump
,因为我在api控制器函数中进行解码。但是如果您想知道$title
的输出是什么,那么它仍然是Me&;您可以在控制台中使用
。@ChrisG确实正确。也许我应该更清楚地回答我的问题。在前端,我使用Angular6/Typescript,我得到Me&;当我查看“网络”选项卡时,您可以使用
。我尝试使用encodeURIcomponents,得到了Me%20%26%20You
,但我仍然无法在后端对其进行解码&
是一个HTML实体。不是数据库实体或任何其他东西。不要像那样在数据库中存储值。故事结束了!
$title= htmlspecialchars_decode($title);
$title= html_entity_decode($title);
foreach ($user->books as &$book) {
$book['title'] = urldecode(($book['title']));
}
book.title = encodeURIComponent(book.title);