Chinaunix首页 | 论坛 | 博客
  • 博客访问: 284586
  • 博文数量: 52
  • 博客积分: 1278
  • 博客等级: 中尉
  • 技术积分: 627
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-26 12:46
文章分类

全部博文(52)

文章存档

2013年(1)

2012年(51)

分类: 系统运维

2012-02-22 11:28:58

html 实体编码转换成原字符 - [PHP+JS] 2010-03-08

:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://jjuan-flake.blogbus.com/logs/60154344.html

 

今天遇到件很恶心的事,某国外歌词网站提供的歌词在源文件里使用“&#数字;”格式的编码表示abcd....原来小菜我实在才疏学浅不知 此为何物,于是利用八零后特有的搜索引擎控,搜之。片刻得解,此乃html实体编码。平时我们见的 是html的实体字符,其实在后面 还对应一个实体编码。编码表转一个GG/MM的。见附表。

  本人试着将编码通过html_entity_decode转换为字符,却发现公司里用的php4,此函数undefined。没办法只好请教师傅终于找到了答案。

 这些编码的格式“&#十六进制/十进制”,是将字符对应的ASCII码转成10/16进制加上&# ;之后形成。因此我们只要将&#后面的数值转换成ASCII码(十进制),然后找到然后就能找到那个字符。这里有师傅送的一个函数(出处不明)

function unhtmlentities($string)
{
    // replace numeric entities 


    $string = preg_replace('/&#x([0-9a-f]+);/ei', 'chr(hexdec(", $string); //针对十六进制

        //hexdec()返回与 hex_string 参数所表示的十六进制数等值的的十进制数
    //chr返回ascii码对应的字符

  $string = preg_replace('~&#([0-9]+);~e', 'chr(, $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
阅读(6606) | 评论(0) | 转发(0) |
0

上一篇:php 获取客户端IP地址

下一篇:PHP Unit Test

给主人留下些什么吧!~~