PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我目前正在尝试提供XHTML5.目前,我在正在处理页面上提供XHTML 1.1 Strict.那就是我为有能力的浏览器所做的.对于那些不接受XML编码数据的人,我会严格遵循HTML4.1.

在尝试使用HTML5进行试验时,以HTML5格式交付时,所有功能或多或少都可以按预期工作.但是,作为XHTML5交付时,我遇到的第一个问题是HTML实体. FF4 sais& uuml;是未定义的实体.因为没有HTML5 DTD.

我了解到HTML5 wiki当前建议:

我确实需要& lt;& gt;在某些地方.因此,我的问题是,用PHP解码除上述五个实体之外的所有实体的最佳方法是什么. html_entity_decode()对其全部进行解码,因此是否有合理的方法排除某些内容

更新:

目前,我采用了一种简单的替换/替换返回方法,因此,除非真的有一种优雅的方法,否则这个问题就足以解决我的迫切需求.

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;
}

解决方法:

通用转换时要特别注意:使用带有认参数的html_entity_decode不会删除all named entities,只有少数由旧的HTML 4.01标准定义.因此,& copy;(©)之类的实体将被转换;但有些人喜欢& plus((& plus;)).要转换所有命名的实体,请在第二个参数(!)中使用ENT_HTML5.

此外,如果目标编码不是UTF8,则无法接收上级(至255个)名称,例如& Ascr;(& Ascr;)则为119964> 255.

因此,要转换“所有可能的命名实体”,您必须使用html_entity_decode($s,ENT_HTML5,’UTF-8′),但仅对PHP5.3有效,该标志实现了ENT_HTML5.

在此问题的特定情况下,还必须使用标志ENT_NOQUOTES代替认的ENT_COMPAT,因此,必须使用html_entity_decode($s,ENT_HTML5 | ENT_NOQUOTES,’UTF-8′)

PS(编辑):感谢@BoltClock记住有关PHP5.3的知识.

大佬总结

以上是大佬教程为你收集整理的用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出全部内容,希望文章能够帮你解决用PHP删除除5个预定义HTML实体之外的所有实体的最佳方法-用于XHTML5输出所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: