// PHP function
Function escape ($ String ) {$ N = $ Bn = $ Tn = 0 ; $ Output = '' ; $ Special = " -_. + @/* 0123456789 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz " ; While ($ N <strlen ($ String ) {$ ASCII = Ord ($ String [$ N]); If ($ ASCII = 9 | $ ASCII = 10 | ( 32 <= $ ASCII & $ ASCII <= 126 ) {$ TN = 1 ; $ N ++ ;} Elseif ( 194 <= $ ASCII & $ ASCII <= 223 ) {$ TN = 2 ; $ N + = 2 ;} Elseif ( 224 <= $ ASCII & $ ASCII <= 239 ) {$ TN = 3 ; $ N + = 3 ;} Elseif ( 240 <= $ ASCII & $ ASCII <= 247 ) {$ TN = 4 ; $ N + = 4 ;} Elseif ( 248 <= $ ASCII & $ ASCII <= 251 ) {$ TN = 5 ; $ N + = 5 ;} Elseif ($ ASCII = 252 | $ ASCII = 253 ) {$ TN = 6 ; $ N + = 6 ;} Else {$ N ++ ;} $ Singlestr = Substr ($ String , $ Bn, $ Tn); $ charval = Bin2hex (iconv ( ' UTF-8 ' , ' Ucs-2 ' , $ Singlestr )); If (Base_convert ($ charval, 16 , 10 )> 0xff ){ If (! Preg_match ( " /Win/I " , Php_ OS) $ charval = Substr ($ charval, 2 , 2 ). Substr ($ charval, 0 , 2 ); $ Output. = ' % U ' . $ Charval ;} Else { If ( False ! = Strpos ($ special, $ singlestr) $ output. = $ Singlestr; Else $ Output. = " % " . Dechex (ord ($ String [$ Bn]);} $ bn =$ N ;} Return $ Output ;}