日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

php 去掉实体,用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出...

發(fā)布時間:2023/12/20 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 去掉实体,用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我目前正在嘗試提供XHTML5.目前,我在正在處理的頁面上提供XHTML 1.1 Strict.那就是我為有能力的瀏覽器所做的.對于那些不接受XML編碼數(shù)據(jù)的人,我會嚴(yán)格遵循HTML4.1.

在嘗試使用HTML5進(jìn)行試驗時,以HTML5格式交付時,所有功能或多或少都可以按預(yù)期工作.但是,作為XHTML5交付時,我遇到的第一個問題是HTML實體. FF4 sais& uuml;是未定義的實體.因為沒有HTML5 DTD.

我了解到HTML5 wiki當(dāng)前建議:

Do not use entity references in XHTML (except for the 5 predefined entities: &, <, >, " and ')

我確實需要& lt;& gt;在某些地方.因此,我的問題是,用PHP解碼除上述五個實體之外的所有實體的最佳方法是什么. html_entity_decode()對其全部進(jìn)行解碼,因此是否有合理的方法排除某些內(nèi)容?

更新:

目前,我采用了一種簡單的替換/替換返回方法,因此,除非真的有一種優(yōu)雅的方法,否則這個問題就足以解決我的迫切需求.

function non_html5_entity_decode($string)

{

$string = str_replace("&",'@@@AMP',

str_replace("'",'@@@APOS',

str_replace("<",'@@@LT',

str_replace(">",'@@@GT',

str_replace(""",'@@@QUOT',$string)))));

$string = html_entity_decode($string);

$string = str_replace('@@@AMP',"&",

str_replace('@@@APOS',"'",

str_replace('@@@LT',"<",

str_replace('@@@GT',">",

str_replace('@@@QUOT',""",$string)))));

return $string;

}

解決方法:

通用轉(zhuǎn)換時要特別注意:使用帶有默認(rèn)參數(shù)的html_entity_decode不會刪除all named entities,只有少數(shù)由舊的HTML 4.01標(biāo)準(zhǔn)定義.因此,& copy;(?)之類的實體將被轉(zhuǎn)換;但有些人喜歡& plus((& plus;)).要轉(zhuǎn)換所有命名的實體,請在第二個參數(shù)(!)中使用ENT_HTML5.

此外,如果目標(biāo)編碼不是UTF8,則無法接收上級(至255個)名稱,例如& Ascr;(& Ascr;)則為119964> 255.

因此,要轉(zhuǎn)換“所有可能的命名實體”,您必須使用html_entity_decode($s,ENT_HTML5,’UTF-8′),但僅對PHP5.3有效,該標(biāo)志實現(xiàn)了ENT_HTML5.

在此問題的特定情況下,還必須使用標(biāo)志ENT_NOQUOTES代替默認(rèn)的ENT_COMPAT,因此,必須使用html_entity_decode($s,ENT_HTML5 | ENT_NOQUOTES,’UTF-8′)

PS(編輯):感謝@BoltClock記住有關(guān)PHP5.3的知識.

標(biāo)簽:html5,php

來源: https://codeday.me/bug/20191208/2090196.html

總結(jié)

以上是生活随笔為你收集整理的php 去掉实体,用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。