补充:http://www.cnblogs.com/tylerdonet/p/3483836.html
在html里有特殊意义的字符比如<,这种直接写<那么久执行了,浏览器会认为是标签,所以说应该使用它对应的实体,实体解析后显示的是对应字符。
转义:以反斜杠开头的不可显示的特殊字符通常称为控制字符,也被称为转义字符。通过转义字符可以在字符串中添加不可显示的特殊字符,或者防止引号匹配混乱的作用。加了反斜杠以后就只是用而不进行显示。通常加反斜杠还可以用来匹配特殊符号的实体 如'
php从后端返回的数据是实体名称,但是由于单引号的兼容问题(ie上不支持' )所以说单引号使用了实体的编号即'
在做#过滤的时候 需要先把'替换为',防止误伤。。。
然后在最后的字符urlencode编码的时候,bingo防御直接的单引号(但是不防御实体或编码),所以提前把单引号转换为实体编号'
,' 实体编号比实体名称的好处就是,几乎所有浏览器都支持,而相对更好记的实体名称方式,ie兼容有问题。
竟然还有这种。。。如果你的页面是gbk,但是跳过去的另一个页面是utf8,那么你需要下面这样转一下。。
$t = urlencode(mb_convert_encoding($matchs[1], 'utf-8', 'gb2312'));