18禁黄动漫网站禁片无遮挡观看|国产在线观看免费A∨|国产偷伦在线2020

  • 
    
    1. <table id="dwhxz"><cite id="dwhxz"></cite></table>
    2. thinkphp6模板中輸出的html被轉義的解決方案

      2022-09-16 23:41 欄目:技術開發 查看(10756)

      在thinkphp5升級為了thinkphp6后,發現一些文章內頁的富文本區域直接顯示的是html源代碼,而沒有解析,查看頁面源碼發現html是被轉義成實體了。如圖所示:

      微信截圖_20220916223521

      雖然內容本身在數據庫存儲的時候是被轉成實體了,但是在輸出給模板前已經通過htmlspecialchars_decode處理了,按理應該不會這樣。但是實際上,從thinkphp5.1開始thinkphp自帶的模板引擎think-template會“自作主張”在解析模板的時候使用htmlentities方法進行全部字符實體化。如下圖就是thinkphp自帶模板引擎解析模板文件生成的原生php代碼:

      微信截圖_20220916224523

      實際上從thinkphp5開始thinkphp官方號稱就是面向API應用開發;隨著現在技術模式的演進,越來越多的web應用開始采用前后端分離的方式,因此在thinkphp6默認情況下是不支持模板引擎的,需要手動按照模板引擎think-template。如下是官方關于視圖(也就是傳統的模板)的說明:

      微信截圖_20220916225530

      基本的原理已經清楚了,那就是新版的thinkphp模板引擎在解析模板文件為原生php代碼的時候,會自行對echo的內容進行htmlentities處理,那么解決這個問題的辦法就是消除htmlentities方法的影響。以下提供幾個方法來解決這個問題:

      1、使用{$content|raw}(推薦這種方式,簡單明了)

      這個方法的作用就是告訴模板引擎別給我瞎加htmlentities來處理,這樣解析出來的原始代碼就沒有強制加上htmlentities方法,自然就按照后端給的是什么內容就輸出原始的內容;加上raw就是袁術內容輸出的意思。如下圖加上raw解析的就沒有

      微信截圖_20220916231335

      2、原生php代碼輸出內容

      這樣模板引擎就不會去解析這部分代碼,自然也就不會私自添加htmlentities方法來處理內容了。

      與我們的項目經理聯系
      掃二維碼與項目經理溝通

      我們在微信上24小時期待你的聲音

      解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流

      轉載請注明出處:thinkphp6模板中輸出的html被轉義的解決方案 - 微構網絡
      分享:
    3. 
      
      1. <table id="dwhxz"><cite id="dwhxz"></cite></table>