補(bǔ)充:http://www.cnblogs.com/tylerdonet/p/3483836.html
在html里有特殊意義的字符比如<,這種直接寫<那么久執(zhí)行了,瀏覽器會(huì)認(rèn)為是標(biāo)簽,所以說應(yīng)該使用它對應(yīng)的實(shí)體,實(shí)體解析后顯示的是對應(yīng)字符。
轉(zhuǎn)義:以反斜杠開頭的不可顯示的特殊字符通常稱為控制字符,也被稱為轉(zhuǎn)義字符。通過轉(zhuǎn)義字符可以在字符串中添加不可顯示的特殊字符,或者防止引號(hào)匹配混亂的作用。加了反斜杠以后就只是用而不進(jìn)行顯示。通常加反斜杠還可以用來匹配特殊符號(hào)的實(shí)體 如'
php從后端返回的數(shù)據(jù)是實(shí)體名稱,但是由于單引號(hào)的兼容問題(ie上不支持' )所以說單引號(hào)使用了實(shí)體的編號(hào)即'
在做#過濾的時(shí)候 需要先把'替換為',防止誤傷。。。
然后在最后的字符urlencode編碼的時(shí)候,bingo防御直接的單引號(hào)(但是不防御實(shí)體或編碼),所以提前把單引號(hào)轉(zhuǎn)換為實(shí)體編號(hào)'
,' 實(shí)體編號(hào)比實(shí)體名稱的好處就是,幾乎所有瀏覽器都支持,而相對更好記的實(shí)體名稱方式,ie兼容有問題。
竟然還有這種。。。如果你的頁面是gbk,但是跳過去的另一個(gè)頁面是utf8,那么你需要下面這樣轉(zhuǎn)一下。。
$t = urlencode(mb_convert_encoding($matchs[1], 'utf-8', 'gb2312'));