php - 使用 {{ }} 时的 Laravel 5.6 htmlspecialchars

标签 php mysql laravel laravel-blade

我最近将一个项目从 Laravel 5.5 升级到 5.6,我有一些编码字符,例如 ' 以前没有的。如果我再次降级到 Laravel 5.5,保持一切不变(只需降级几个包以使其兼容),字符将按预期显示。

我检查了文档,它在 5.5 和 5.6 中提到了关于 {{ }} 和 {!! !!}: https://laravel.com/docs/5.6/blade#displaying-data

数据库连接在升级之前设置为使用 utf8mb4 作为字符集,使用 utf8mb4_unicode_ci 作为排序规则。

知道为什么 Laravel 5.6 会发生这种情况吗?一种(快速)解决方案是将 {{ }} 替换为 {!! !!} 或 {{ html_entity_decode($text, ENT_QUOTES) }} 但我觉得可以做一些更通用的事情。

最佳答案

在此处阅读升级指南:https://laravel.com/docs/5.6/upgrade

你的问题的答案在 Blade > HTML Entity Encoding 中。

在您的 app/Providers/AppServiceProvider.php 中,将这段代码添加到 Blade::withoutDoubleEncoding(); 的启动函数中。这是整个文件:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Blade::withoutDoubleEncoding();
    }
}

关于php - 使用 {{ }} 时的 Laravel 5.6 htmlspecialchars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722185/

相关文章:

php - 如何移动缩略图以在codeigniter中指定文件夹

php - 如何在 laravel 中使用 pangination 和 sortByDesc 功能?

phpunit & paratest & Laravel - 创建测试存储目录时随机失败

PHP MySQL 多个 id 插入并设置名称

php - 如何根据函数php的值自动生成number_format?

PHP/MySQL : Get one row and the next five rows

mysql - 连接一个或另一个表的 SQL 查询

mysql - 拉拉维尔 5 : inserting only if all values exist

php - 如何在 Laravel Lumen 中设置 Session 或 Cookie 的生命周期

php - Laravel 5.2 在同一页面上更新 Eloquent Master Detail