html 实体编码转换成原字符
今天遇到件很恶心的事,某国外歌词网站提供的歌词在源文件里使用“&#数字;”格式的编码表示abcd....原来小菜我实在才疏学浅不知此为何物,于是特有的搜索引擎控,搜之。片刻得解,此乃html实体编码。平时我们见的 是html的实体字符,其实在后面 还对应一个实体编码。编码表转一个GG/MM的。见附表。
本人试着将编码通过html_entity_decode转换为字符,却发现公司里用的php4,此函数undefined。没办法只好请教师傅终于找到了答案。
这些编码的格式“&#十六进制/十进制”,是将字符对应的ASCII码转成10/16进制加上&#;之后形成。因此我们只要将&#后面的数值转换成ASCII码(十进制),然后找到然后就能找到那个字符。这里有师傅送的一个函数(出处不明)
functionunhtmlentities($string)
{
// replace numeric entities
$string = preg_replace('/&#x([0-9a-f]+);/ei', 'chr(hexdec("\\1"))', $string); //针对十六进制
//hexdec()返回与 hex_string 参数所表示的十六进制数等值的的十进制数
//chr返回ascii码对应的字符
$string =preg_replace('~&#([0-9]+);~e', 'chr(\\1)',$string); //针对十进制
echo $string;
// replace literal entities
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
/get_html_translation_table 返回 htmlentities() 和 htmlspecialchars() 函数使用的翻译表,HTML_ENTITIES/翻译所有需要 URL 编码的字符,以便正确地显示在网页上
$trans_tbl = array_flip($trans_tbl);//反转翻译表的键名和值 值做键名
return strtr($string, $trans_tbl); //返回$string中字符在$trans_tbl中对应的特定字符
}
// 在preg_replace的正则表达式,可以使用e修正符:使用此修正符preg_replace()在替换字符串中对逆向引用做正常替 换,将其作为PHP代码求值(而非简单的字符串),将用其结果替换所搜索字符串。这就是在替换字符串里可以时使用php函数的原因。
附录
HTML实体字
字符 |
十进制字符编号 |
实体名字 |
说明 |
— |
� |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
|
— |
制表符Horizontal tab |
— |
|
— |
换行Line feed |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
|
— |
回车Carriage Return |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
— |
 |
— |
未使用Unused |
|
— |
Space |
|
! |
! |
— |
惊叹号Exclamation mark |
“ |
" |
" |
双引号Quotation mark |
# |
# |
— |
数字标志Number sign |
$ |
$ |
— |
美元标志Dollar sign |
% |
% |
— |
百分号Percent sign |
& |
& |
& |
Ampersand |
‘ |
' |
— |
单引号Apostrophe |
( |
( |
— |
小括号左边部分Left parenthesis |
) |
) |
— |
小括号右边部分Right parenthesis |
* |
* |
— |
星号Asterisk |
+ |
+ |
— |
加号Plus sign |
, |
, |
— |
逗号Comma |
- |
- |
— |
连字号Hyphen |
. |
. |
— |
句号Period (fullstop) |
/ |
/ |
— |
斜杠Solidus (slash) |
0 |
0 |
— |
数字0 Digit 0 |
1 |
1 |
— |
数字1 Digit 1 |
2 |
2 |
— |
数字2 Digit 2 |
3 |
3 |
— |
数字3 Digit 3 |
4 |
4 |
— |
数字4 Digit 4 |
5 |
5 |
— |
数字5 Digit 5 |
6 |
6 |
— |
数字6 Digit 6 |
7 |
7 |
— |
数字7 Digit 7 |
;8 |
8 |
— |
数字8 Digit 8 |
9 |
9 |
— |
数字9 Digit 9 |
: |
: |
— |
冒号Colon |
; |
; |
— |
分号Semicolon |
< |
< |
< |
小于号Less than |
= |
= |
— |
等于符号Equals sign |
> |
> |
> |
大于号Greater than |
? |
? |
— |
问号Question mark |
@ |
@ |
— |
Commercial at |
A |
A |
— |
大写A Capital A |
B |
B |
— |
大写B Capital B |
C |
C |
— |
大写C Capital C |
D |
D |
— |
大写D Capital D |
E |
E |
— |
大写E Capital E |
F |
F |
— |
大写F Capital F |
G |
G |
— |
大写G Capital G |
H |
H |
— |
大写H Capital H |
I |
I |
— |
大写J Capital I |
J |
;J |
— |
大写K Capital J |
K |
K |
— |
大写L Capital K |
L |
L |
— |
大写K Capital L |
M |
M |
— |
大写M Capital M |
N |
N |
— |
大写N Capital N |
O |
O |
— |
大写O Capital O |
P |
P |
— |
大写P Capital P |
Q |
Q |
— |
大写Q Capital Q |
R |
R |
— |
大写R Capital R |
S |
S |
— |
大写S Capital S |
T |
T |
— |
大写T Capital T |
U |
U |
— |
大写U Capital U |
V |
V |
— |
大写V Capital V |
W |
W |
— |
大写W Capital W |
X |
X |
— |
大写X Capital X |
Y |
Y |
— |
大写Y Capital Y |
Z |
Z |
— |
大写Z Capital Z |
[ |
[ |
--- |
中括号左边部分Left square bracket |
\ |
\ |
--- |
反斜杠Reverse solidus (backslash) |
] |
] |
— |
中括号右边部分Right square bracket |
^ |
^ |
— |
Caret |
_ |
_ |
— |
下划线Horizontal bar (underscore) |
` |
` |
— |
尖重音符Acute accent |
a |
a |
— |
小写a Small a |
b |
b |
— |
小写b Small b |
c |
c |
— |
小写c Small c |
d |
d |
— |
小写d Small d |
e |
e |
— |
小写e Small e |
f |
f |
— |
小写f Small f |
g |
g |
— |
小写g Small g |
h |
h |
— |
小写h Small h |
i |
i |
— |
小写i Small i |
j |
j |
— |
小写j Small j |
k |
k |
— |
小写k Small k |
l |
l |
— |
小写l Small l |
m |
m |
— |
小写m Small m |
n |
n |
— |
小写n Small n |
o |
o |
— |
小写o Small o |
p |
p |
— |
小写p Small p |
q |
q |
— |
小写q Small q |
r |
r |
— |
小写r Small r |
s |
s |
— |
小写s Small s |
t |
t |
— |
小写t Small t |
u |
u |
— |
小写u Small u |
v |
v |
— |
小写v Small v |
w |
w |
— |
小写w Small w |
x |
x |
— |
小写x Small x |
y |
y |
— |
小写y Small y |
z |
z |
— |
小写z Small z |
{ |
{ |
— |
大括号左边部分Left curly brace |
| |
| |
— |
竖线Vertical bar |
} |
} |
— |
大括号右边部分Right curly brace |
~ |
~ |
— |
Tilde |
— |
|
— |
未使用Unused |
|
|
空格Nonbreaking space |
|
¡ |
¡ |
¡ |
Inverted exclamation |
¢ |
¢ |
¢ |
货币分标志Cent sign |
£ |
£ |
£ |
英镑标志Pound sterling |
¤ |
¤ |
¤ |
通用货币标志General currency sign |
¥ |
¥ |
¥ |
日元标志Yen sign |
¦ |
¦ |
¦ or &brkbar; |
断竖线Broken vertical bar |
§ |
§ |
§ |
分节号Section sign |
¨ |
¨ |
¨ or ¨ |
变音符号Umlaut |
© |
© |
© |
版权标志Copyright |
ª |
ª |
ª |
Feminine ordinal |
« |
« |
« |
Left angle quote, guillemet left |
¬ |
¬ |
¬ |
Not sign |
|
­ |
Soft hyphen |
|
® |
® |
® |
注册商标标志Registered trademark |
¯ |
¯ |
¯ or &hibar; |
长音符号Macron accent |
° |
° |
° |
度数标志Degree sign |
± |
± |
± |
加或减Plus or minus |
² |
² |
² |
上标2 Superscript two |
³ |
³ |
³ |
上标3 Superscript three |
´ |
´ |
´ |
尖重音符Acute accent |
µ |
µ |
µ |
Micro sign |
¶ |
¶ |
¶ |
Paragraph sign |
· |
· |
· |
Middle dot |
¸ |
¸ |
¸ |
Cedilla |
¹ |
¹ |
¹ |
上标1 Superscript one |
º |
º |
º |
Masculine ordinal |
» |
» |
» |
Right angle quote, guillemet right |
¼ |
¼ |
¼ |
四分之一Fraction one-fourth |
½ |
½ |
½ |
二分之一Fraction one-half |
¾ |
¾ |
¾ |
四分之三Fraction three-fourths |
¿ |
¿ |
¿ |
Inverted question mark |
À |
À |
À |
Capital A, grave accent |
Á |
Á |
Á |
Capital A, acute accent |
 |
 |
 |
Capital A, circumflex |
à |
à |
à |
Capital A, tilde |
Ä |
Ä |
Ä |
Capital A, di?esis / umlaut |
Å |
Å |
Å |
Capital A, ring |
Æ |
Æ |
Æ |
Capital AE ligature |
Ç |
Ç |
Ç |
Capital C, cedilla |
È |
È |
È |
Capital E, grave accent |
É |
É |
É |
Capital E, acute accent |
Ê |
Ê |
Ê |
Capital E, circumflex |
Ë |
Ë |
Ë |
Capital E, di?esis / umlaut |
Ì |
Ì |
Ì |
Capital I, grave accent |
Í |
Í |
Í |
Capital I, acute accent |
Î |
Î |
Î |
Capital I, circumflex |
Ï |
Ï |
Ï |
Capital I, di?esis / umlaut |
Ð |
Ð |
Ð |
Capital Eth, Icelandic |
Ñ |
Ñ |
Ñ |
Capital N, tilde |
Ò |
Ò |
Ò |
Capital O, grave accent |
Ó |
Ó |
Ó |
Capital O, acute accent |
Ô |
Ô |
Ô |
Capital O, circumflex |
Õ |
Õ |
Õ |
Capital O, tilde |
Ö |
Ö |
Ö |
Capital O, di?esis / umlaut |
× |
× |
× |
乘号Multiply sign |
Ø |
Ø |
Ø |
Capital O, slash |
Ù |
Ù |
Ù |
Capital U, grave accent |
Ú |
Ú |
Ú |
Capital U, acute accent |
Û |
Û |
Û |
Capital U, circumflex |
Ü |
Ü |
Ü |
Capital U, di?esis / umlaut |
Ý |
Ý |
Ý |
Capital Y, acute accent |
Þ |
Þ |
Þ |
Capital Thorn, Icelandic |
ß |
ß |
ß |
Small sharp s, German sz |
à |
à |
à |
Small a, grave accent |
á |
á |
á |
Small a, acute accent |
â |
â |
â |
Small a, circumflex |
ã |
ã |
ã |
Small a, tilde |
ä |
ä |
ä |
Small a, di?esis / umlaut |
å |
å |
å |
Small a, ring |
æ |
æ |
æ |
Small ae ligature |
ç |
ç |
ç |
Small c, cedilla |
è |
è |
è |
Small e, grave accent |
é |
é |
é |
Small e, acute accent |
ê |
ê |
ê |
Small e, circumflex |
ë |
ë |
ë |
Small e, di?esis / umlaut |
ì |
ì |
ì |
Small i, grave accent |
í |
í |
í |
Small i, acute accent |
î |
î |
î |
Small i, circumflex |
ï |
ï |
ï |
Small i, di?esis / umlaut |
ð |
ð |
ð |
Small eth, Icelandic |
ñ |
ñ |
ñ |
Small n, tilde |
ò |
ò |
ò |
Small o, grave accent |
ó |
ó |
ó |
Small o, acute accent |
ô |
ô |
ô |
Small o, circumflex |
õ |
õ |
õ |
Small o, tilde |
ö |
ö |
ö |
Small o, di?esis / umlaut |
÷ |
÷ |
÷ |
除号Division sign |
ø |
ø |
ø |
Small o, slash |
ù |
ù |
ù |
Small u, grave accent |
ú |
ú |
ú |
Small u, acute accent |
û |
û |
û |
Small u, circumflex |
ü |
ü |
ü |
Small u, di?esis / umlaut |
ý |
ý |
ý |
Small y, acute accent |
þ |
þ |
þ |
Small thorn, Icelandic |
ÿ |
ÿ |
ÿ |
Small y, umlaut |
html 实体编码转换成原字符的更多相关文章
- C# 将html实体编码转换到正常字符 & #40;格式
获取到html实体编码字符后,通过正则获取其中的html实体编码,再统一强制转换到正常字符: 代码如下: string strformat = item.value7; //将html实体编码转换到正 ...
- java字符串转义,把<>转换成<>等字符【原】
java字符串转义,把<>转换成<>等字符 使用的是commons-lang3-3.4 中的StringEscapeUtils类 package test; import ja ...
- C# DataTable转换成实体列表 与 实体列表转换成DataTable
/// <summary> /// DataTable转换成实体列表 /// </summary> /// <typeparam name="T"&g ...
- 转换编码,将Unicode编码转换成可以浏览的utf-8编码
//转换编码,将Unicode编码转换成可以浏览的utf-8编码 public function unicodeDecode($name) { $pattern = '/([\w]+)|(\\\u([ ...
- 字符串js编码转换成实体html编码的方法(防范XSS攻击)
js代码在html页面中转换成实体html编码的方法一: <!DOCTYPE html><html> <head> <title>js代码转换成实 ...
- Base64字符保存图片,图片转换成Base64字符编码
//文件转换成Base64编码 public static String getFileBase64Str(String filePath) throws IOException { String f ...
- gb2312提交的url编码转换成utf8的查询
使用场景,当一网站是gb2312的编码向另一个是utf8的网站提交查询 如:http://search.chinayq.com/?key=%C0%D6%C6%F7 其中key为gb2312的url编码 ...
- [日常工作]虚拟机或者实体机转换成HyperV虚拟机的方法
1.环境种类比较多, 有vb的 vm的还有人想直接用hyperV的 毕竟docker 是一个趋势, win10 上面 安装了hyperV 启用docker 角色之后 安装vb和vm的话 就没法启用CP ...
- [代码] 类似 YYText 将表情文本转换成表情字符
一,经历 1> 由于工作需要,得把 UITextView 中的属性文本转换成普通文字,并将处理后的普通文字转换成属性文本. 2> 将属性文本转换成普通文字简单,可以调用属性文本的enume ...
随机推荐
- andriod8.1.0源码编译中的一个坑-package com.sun.javadoc does not exist
这里记录编译过程中的一个坑!!! 编译过程中出现了下面的报错 external/doclava/src/com/google/doclava/ClassInfo.java:20: error: pac ...
- Jmeter之命令行生成HTML报告
其实每次使用jemter.bat文件启动JMeter时,命令行窗口都会提示我们不要使用GUI窗口进行测试,除非是进行调试脚本 使用命令行生成结果也很测试报告也很简单 jmeter -n -t [jmx ...
- thinkphp3.2生成二维码
public function createCode() { Vendor('phpqrcode.phpqrcode'); $object = new \QRcode(); $url = 'http: ...
- Shell命令-系统信息及显示之free、cal
文件及内容处理 - free.cal 1. free:查看系统内存 free命令的功能说明 free 命令用于显示内存状态.free 指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内 ...
- CodeForces-1253B(贪心+模拟)
题意 https://vjudge.net/problem/CodeForces-1253B 把一个序列划成几段,使得每一段都是+x在-x前面,二者均要有. 问划成几段,每一段的大小是多少. 思路 用 ...
- 201271050130-滕江南-《面向对象程序设计(java)》第十二周学习总结
201271050130-滕江南-<面向对象程序设计(java)>第十二周学习总结 项 目 内 容 这个作业属于哪个课程 https://www.cnblogs.co ...
- git 关联vs code
{ "window.zoomLevel": 1, "editor.fontSize": 15, "gitlens.advanc ...
- unique_ptr的实现原理
在C++11中有两个智能指针类型来管理动态对象,share_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指对象. 我们知道指针或引用在离开作用域时是不会进行析构的,但是类在离开作 ...
- A1089 Insert or Merge (25 分)
一.技术总结 看到是一个two pointers问题,核心是要理解插入排序和归并排序的实现原理,然后判断最后实现 可以知道a数组和b数组怎么样判断是插入排序还是归并排序,因为插入排序是来一个排一个,所 ...
- babel速览
babel babel初衷 在es6出现之后,由于此版本的巨大改变,给人们带来了很多革命性的技术支持,但是当时很多浏览器对es6支持有限,babel就是为了达到写最新的语法,可以在任意浏览器运行而出现 ...