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

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

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

我了解到HTML5 wiki当前建议:

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

我确实需要& 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的知识.

标签:html5,php

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flask爱家租房--发布新房源(保存房屋基本信息)

0.页面展示效果 1.后端代码 api.route("/houses/info", methods["POST"]) login_required def save_house_info():"""保存房屋的基本信息前端发送过来的json数据{"title":"","price":"","ar…

今后最有前途的媒体格式 MXF

MXF格式已经被推出几年了&#xff0c;从当初一个陌生的不为人们重视的格式逐渐获得了业内人士的认知和认可&#xff0c;现如今正被广泛应用于广播电视与后期制作领域&#xff0c;且有不断扩大之势&#xff0c;松下公司推出的基于PII卡的无磁带式标清摄像机&#xff0c;它所采用…

【c#】RabbitMQ学习文档(一)Hello World

一、简介 RabbitMQ是一个消息的代理器&#xff0c;用于接收和发送消息&#xff0c;你可以这样想&#xff0c;他就是一个邮局&#xff0c;当您把需要寄送的邮件投递到邮筒之时&#xff0c;你可以确定的是邮递员先生肯定会把邮件发送到需要接收邮件的人的手里&#xff0c;不…

什么是状态转换图

通过描绘系统的状态及引起系统状态转换的事件&#xff0c;来表示系统的行为。此外状态转换图还指明了作为特定事件的结果系统将做哪些动作&#xff08;例如&#xff0c;处理数据&#xff09;。因此状态转换图提供了行为建模机制。

Python学习笔记三

参考教程&#xff1a;廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 一、函数的定义 Python中定义一个函数需要使用def语句&#xff0c;依次确定函数名、参数及函数体内容&#xff1a; #一个求绝对值的函数 def my_abs(x):i…

oracle中如何分页,Oracle中操作分页

mysql中分页的写法&#xff1a;select t.* from tbl_user t order by t.id limit $offset , $perpage$currentPage 1;//当前页码其中后面$sql&#xff1a;with partdata as (select rownum rowno,t.* from tablename t where column1090order by column) select * from partda…

Flask爱家租房--发布新房源(保存房屋图片)

0.页面展示效果 1&#xff09;首先房东填写房屋信息&#xff1b; 2&#xff09;当房东填写发布的房源信息之后&#xff0c;隐藏&#xff08;hide&#xff09;刚才填写信息的界面&#xff0c;同时显示(show)上传房屋图片的界面。 1.后端代码 api.route("/houses/image&q…

数字的处理 :小数点四舍五入

js取float型小数点后两位数的方法 转载 发布时间&#xff1a;2014年01月18日 17:03:32 投稿&#xff1a;shangke 我要评论 js中取小数点后两位方法最常用的就是四舍五入函数了&#xff0c;前面我介绍过js中四舍五入一此常用函数&#xff0c;这里正好用上&#xff0c;下面…

如何成为一名优秀的C程序员

问题的提出 每过一段时间我总会收到一些程序员发来的电子邮件&#xff0c;他们会问我是用什么编程语言来编写自己的游戏的&#xff0c;以及我是如何学习这种编程语言的。因此&#xff0c;我认为在这篇博文里列出一些有关C语言的最佳读物应该能帮到不少人。如果你知道其它的优秀…

CFS调度器

一、前言 随着内核版本的演进&#xff0c;其源代码的膨胀速度也在递增&#xff0c;这让Linux的学习曲线变得越来越陡峭了。这对初识内核的同学而言当然不是什么好事情&#xff0c;满腔热情很容易被当头浇灭。我有一个循序渐进的方法&#xff0c;那就是先不要看最新的内核&#…

oracle索引分类与区分,深入理解Oracle表(6):堆组织表(HOT)和索引组织表(IOT)的区别...

摘要&#xff1a;堆表&#xff1a;又称堆组织表&#xff0c;常用的表类型&#xff0c;以堆的方式管理&#xff0c;当增加数据时&#xff0c;将使用段中第一个适合数据大小的空闲空间。当删除数据时&#xff0c;留下的空间允许以后的DML操作重用。 堆组织表(heap table)应用中99…

Flask爱家租房--发布新房源(总结)

重点总结 学习过程中&#xff0c;发现house_id贯穿两个接口内容&#xff0c;现对后端逻辑部分做以下总结&#xff1a; 1&#xff09;房东首先在前端填写房屋的基本信息&#xff0c;此时通过newhouse.js文件$("#form-house-info").submit(function (e) {…}进行处理&…

关系的三类完整性约束

规则2.1实体完整性规则&#xff08;Entity Integrity&#xff09;若属性A是基本关系R的主属性&#xff0c;则属性A不能取空值空值就是“不知道”或“不存在”或“无意义”的值例&#xff1a; 选修&#xff08;学号&#xff0c;课程号&#xff0c;成绩&#xff09; “学号、课…

[QNAP crontab 定時執行程式

注意要自動執行的 sh 檔不要放在 /root 裡, 不然韌體更新後檔案會不見, 要放在個人帳號的資料夾&#xff0c;例如 /share/homes/帳號/ QNAP 的 crontab 放在 /etc/config/crontabvi /etc/config/crontab 例如要每日5:00執行 backup.sh 的話&#xff0c;加上這行 00 5 * * * /s…

调整标志位方法oracle,面试题(二)(示例代码)

1.查找/us/oc al/nginx/ogs下更改时间在7天前以log 后极的文件井移动到sr/oca/nginx/log/backup下(至少两种方法)2. Centos 查看某个进程的环境安量3.简述DNS迭代查询和递归直询的区别4.简述TCP三次握手过程以及涉及到的状态(可画草图) ?5.统计TCP连接状态(至少两种方法)6.发现…

国际最具潜力IT专业认证

正如很多的争论一样&#xff0c;IT认证也是现在争论的热点&#xff0c;在IT专业人士的世界里&#xff0c;IT认证对于其职业规划有着很大的影响。在时下究竟哪个认证才具有最大意义呢&#xff1f;本文罗列了十个最具潜力的技术认证&#xff0c;一起来看看都有哪些吧&#xff01;…

关系代数

关系代数是一种抽象的查询语言&#xff0c;它用对关系的运算来表达查询关系代数运算对象是关系运算结果亦为关系关系代数的运算符有两类&#xff1a;集合运算符和专门的关系运算符

设计模式的六大原则

设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更加容易被他人理解、保证代码可靠性。设计模式是代码编制真正工程化&#xff08;工程化即系统化、模块化、规范化的一个过程。指将具有一定规模数量的单个…

作业7

stuNum 201709090072 print(年级是&#xff1a;stuNum[0:4]) print(专业编号是: stuNum[4:9]) print(序号是: stuNum[-3:]) stuNum 440982201812111876 print(所在省市&#xff1a;stuNum[0:2]) print(所在地区&#xff1a;stuNum[2:4]) print(所在县区&#xff1a;stuNum[4:…