国产又猛又爽又黄视频|在线观看人成视频免费|少妇高潮太爽了在线视频|911国产免费无码专区|特黄做受又大又粗又长大片|欧美一级二级免费在线观看|日日夜人人澡人人澡人人看免|欧洲午夜精品一级毛片在线播放

thinkphp6模板中輸出的html被轉義的解決方案

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

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

微信截圖_20220916223521

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

微信截圖_20220916224523

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

微信截圖_20220916225530

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

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

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

微信截圖_20220916231335

2、原生php代碼輸出內容

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

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

我們在微信上24小時(shí)期待你的聲音

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

轉載請注明出處:thinkphp6模板中輸出的html被轉義的解決方案 - 微構網(wǎng)絡(luò )
分享:
德庆县| 黄冈市| 衡东县| 佛山市| 浑源县| 天长市| 土默特左旗| 武鸣县| 六枝特区| 双城市| 剑阁县| 上杭县| 冷水江市| 海门市| 西畴县| 中阳县| 湟源县| 蕲春县| 通化市| 南雄市| 林芝县| 曲沃县| 湖北省| 施秉县| 仪征市| 济阳县| 铜梁县| 德昌县| 于田县| 台前县| 新田县| 县级市| 凤城市| 准格尔旗| 淮南市| 新绛县| 英山县| 双鸭山市| 张掖市| 东乡县| 翁牛特旗|