Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP Laravel不解码MySQL表中检索到的项目中的特殊字符和_Javascript_Php_Angular_Laravel_Eloquent - Fatal编程技术网

Javascript PHP Laravel不解码MySQL表中检索到的项目中的特殊字符和

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

我面临一个关于特殊字符解码的问题,特别是符号(&)字符

设置

前端:Angular-6/Typescript

后端:PHP/Laravel和雄辩

数据库:MySQL

浏览器:Chrome

问题

使用Javascript,我使用一个简单的基于文本的输入表单,以JSON格式发送数据。测试时,我使用“我和你”作为测试字符串。但是,在浏览器的网络选项卡中,我注意到JSON数据采用

book: {
    title: "Me & You"
...
}
PHP/Laravel将此字符串保存为数据库中的字符串(
Me&;You
)。因为我也在检索标题,所以即使是我的前端文本字段也会显示
Me&;您也可以

要求的行为

它应该以任何方式保存字符串(
Me&;You
),但在检索条目之前,它应该转义特殊字符,以便我接收
Me&You

任何其他建议也将不胜感激。我只需要避开符号和字符

我已经尝试过的

我尝试了以下方法来解决这个问题,但没有成功:

  • 在使用Laravel的
    save
    函数保存模型之前,我使用
    htmlspecialchars\u decode()
    对字符串进行解码,但它仍然提供
    me&;您可以在数据库和前端中使用
  • 我尝试了
    html\u entity\u decode
    ,但还是没有成功
  • 我也在检索标题,所以我想与其解码字符串,不如让它将字符串保存为表中的字符串。但是当我检索标题时,我会解码它们,然后通过响应将它们返回给fronend
  • 但我仍然收到
    Me&;您可以
    。请注意,这里我使用的是引用,因为起初我认为foreach循环正在创建一个新的临时变量,而不是更改原始值

  • 在javascript中,我尝试使用
    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);