php中的escape函式

2022-02-22 18:52:13 字數 810 閱讀 4856

在json中不支援中文,用它傳送中文資料就會出現資料丟失或者亂碼,必須在傳送前對要傳送的字串進行編碼,由於傳送過去需要用js進行資料解析,考慮到js中有unescape函式,故若在php中有個escape函式,對資料進行編碼,在客戶端用unescape進行 解碼,這樣就會方便很多。

先在網上搜尋一把,很多用php實現的escape函式,大同小異,比如下面乙個:

function phpescape($str)

return join("",$ar);

}這個函式可以很好的工作,但是,也許有新手不理解這個函式的原理(比如我),用起來總是不放心,現在我就來解釋一下這個函式的原理。而且我認為,拿別人的**來復用,好比站在了巨人的肩膀上,但是若不理解別人的**,遲早要掉到地面上。

第一句:preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);這個是用正規表示式匹配字串中所有的字元,[\x80-\xff]. 匹配的是漢字,\x表示匹配字元的16進製制編碼,[ ] 是類選擇符,「.」 表示任意乙個字元,這樣[\x80-\xff].匹配的是兩個字元,其中第乙個就是16進製制從80到ff的字元,而這恰好就是漢字編碼的第乙個字元。這樣就能完整的匹配乙個漢字。關於unicode中漢字的編碼,大家可以到網上搜尋一下。同理,[\x01-\x7f]+英文本串,因為最早的英文是ascii編碼,編碼值小於128,也就是16進製制的從01到7f,"+"表示乙個或者多個字元,這樣[\x01-\x7f]+就能匹配連續多個英文本串。

$ar = $r[0];             //$r[0]裡存放是匹配到的陣列

foreach($ar as $k=>$v)

JS中的escape方法

js中的escape方法 對 string 物件編碼以便它們能在所有計算機上可讀,escape charstring 必選項 charstring 引數是要編碼的任意 string 物件或文字。說明 escape 方法返回乙個包含了 charstring 內容的字串值 unicode 格式 所有空格...

escape在sqlserver中的使用

1 escape是幹什麼用的?escape相對於轉移字元 2 escape在什麼情況下使用?舉例說明 例如我們要進行模糊查詢 測試資料 declare tablea table id int col varchar 20 insert into tablea select 1,maco union ...

JSP頁面中escape編碼

jsp頁面中escape編碼 今天在使用中文傳遞引數時,遇到死活編碼轉不過去,於是想到了用escape,在使用後 request.getparameter接收不到引數,於是想著怎麼能夠接收到引數。經過試驗,通過 zbtmp escape escape zbtmp 加密2次danielinbiti v...