本文与 tiankonguse 的博客里同步发表


今天遇到了 html 字符转义的问题,于是记录一下。


问题重现


在链接中,可以添加一个 title 字段,功能是对这个链接的描述。

但是,这个 title 里的字符有严格的限制,不能有引号,空格等字符,于是我就需要进行字符转义了。

这个 title 是在后台用 php 自动生成的,于是便需要使用 php 对字符串进行转义了。


解决方案


php 中有个字符串替换函数 str_replace 非常方便。

可以先看看我的字符转义的代码


$_title = str_replace( array("\""," ","<",">","&"), array("""," ","<",">","&"),$title);


这行代码进可以达到转义一些字符的目的。

第一个参数代表搜索的字符,第二个代表替换的字符,第三个是原串。


HTML 字符扩展知识


转义字符串(Escape Sequence)也称字符实体(Character Entity)。

在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写的规则。第二个原因是,有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表示。


转义字符串的组成


转义字符串(Escape Sequence),即字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。

比如,要显示小于号(<),就可以写 &lt; 或者 &#60; 。


HTML特殊转义字符列表


显示 说明 实体名称 实体编号
半方大的空白 &ensp; &#8194;
全方大的空白 &emsp; &#8195;
不断行的空白格 &nbsp; &#160;
< 小于 &lt; &#60;
> 大于 &gt; &#62;
& &符号 &amp; &#38;
" 双引号 &quot; &#34;
? 版权 &copy; &#169;
? 已注册商标 &reg; &#174;
? 商标(美国) ? &#8482;
× 乘号 &times; &#215;
÷ 除号 &divide; &#247;



Script转义符

转义序列 字符
\b 退格
\f 走纸换页
\n 换行
\r 回车
\t 横向跳格 (Ctrl-I)
\' 单引号
\" 双引号
\\ 反斜杠


参考资料

http://114.xixik.com/character/