2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

thinkphp6模板中輸出的html被轉(zhuǎn)義的解決方案

2022-09-16 23:41 欄目:技術(shù)開發(fā) 查看(17546)

在thinkphp5升級為了thinkphp6后,發(fā)現(xiàn)一些文章內(nèi)頁的富文本區(qū)域直接顯示的是html源代碼,而沒有解析,查看頁面源碼發(fā)現(xiàn)html是被轉(zhuǎn)義成實體了。如圖所示:

微信截圖_20220916223521

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

微信截圖_20220916224523

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

微信截圖_20220916225530

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

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

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

微信截圖_20220916231335

2、原生php代碼輸出內(nèi)容

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

與我們的項目經(jīng)理聯(lián)系
掃二維碼與項目經(jīng)理溝通

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

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請注明出處:thinkphp6模板中輸出的html被轉(zhuǎn)義的解決方案 - 微構(gòu)網(wǎng)絡(luò)
分享:
镇坪县| 云阳县| 广水市| 湘潭县| 天气| 西宁市| 北流市| 赤壁市| 延吉市| 繁昌县| 长岭县| 尚志市| 台州市| 宁夏| 静宁县| 金堂县| 微博| 宁明县| 会昌县| 鄢陵县| 广宗县| 马鞍山市| 满洲里市| 房产| 南通市| 博罗县| 丰原市| 藁城市| 景德镇市| 嵊泗县| 乐清市| 信阳市| 个旧市| 增城市| 菏泽市| 郑州市| 德令哈市| 澜沧| 嘉义县| 高清| 乌海市|