當前位置:首頁 » 編程語言 » escapephp解碼

escapephp解碼

發布時間: 2023-01-13 19:55:46

⑴ 求助關於php轉換漢字為UTF8字元的問題

這樣改試試.
注釋掉這段
/*
if($value < 223){
$str[$i] = rawurlencode(utf8_decode($str[$i]));
//先將utf8編碼轉換為ISO-8859-1編碼的單位元組字元,urlencode單位元組字元.
//utf8_decode()的作用相當於iconv("UTF-8","CP1252",$v)。
}else{
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}
*/
然後把這行$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
拿出到底下.
========================
改完如下:
<?php
function escape($str) {
preg_match_all("/[\xc2-\xdf][\x80-\xbf]+|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]

{3}|[\x01-\x7f]+/e",$str,$r);
//匹配utf-8字元,
$str = $r[0];
//var_mp( $str);
$l = count($str);
for($i=0; $i<$l; $i++){
$value = ord($str[$i][0]);

/*
if($value >= 192 && $value <= 223) $i++;//單位元組
elseif($value >= 224 && $value <= 239) $i = $i + 2;//雙位元組
elseif($value >= 240 && $value <= 247) $i = $i + 3;//三位元組
*/
/*
if($value < 223){
$str[$i] = rawurlencode(utf8_decode($str[$i]));
//先將utf8編碼轉換為ISO-8859-1編碼的單位元組字元,urlencode單位元組字元.
//utf8_decode()的作用相當於iconv("UTF-8","CP1252",$v)。
}else{
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}*/

$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}
return join("",$str);
}
$title="天使寶貝'開心的笑";
$url= escape(iconv('gb2312','utf-8',$title));
echo $url;
?>

⑵ 瀏覽器編碼函數escape(),encodeURI(),encodeURIComponent()的區別

1、escape()
escape()是js編碼函數中最古老的一個。實際上,escape()不能直接用於URL編碼,它的真正作用是返回一個字元的Unicode編碼值。比如「你好」的返回結果是"%u4F60%u597D"。無論網頁的原始編碼是什麼,一旦被javascript編碼,就都變為unicode字元。也就是說,Javascipt函數的輸入和輸出,默認都是Unicode字元。

2、encodeURI()
encodeURI是對整個URL進行編碼,因此除了常見的符號以外,對其他一些在網址中有特殊含義的符號「; / ? : @ & = + $ , #」,也不進行編碼。編碼後,它輸出符號的utf-8形式,並且在每個位元組前加上%,需要注意的是,它不對單引號』編碼。

它對應的解碼函數是decodeURI()。

3、encodeURIComponent()
與encodeURI()的區別是,它用於對URL的組成部分進行個別編碼,而不用於對整個URL進行編碼。因此,「; / ? : @ & = + $ , #」,這些在encodeURI()中不被編碼的符號,在encodeURIComponent()中統統會被編碼,所以encodeURIComponent()相比encodeURI()要更加徹底。至於具體的編碼方法,兩者是一樣。

它對應的解碼函數是decodeURIComponent()。

⑶ php中smarty模板的escape轉碼後的超鏈接報403

解決辦法如下:
1、在php代碼中直接使用urlencode處理你的$url,然後assion入smarty模板,輸出結果A後,點擊鏈接A看是否可用,
2、如果上述操作後,鏈接A不可用,就說明是你的瀏覽器(伺服器)不支持直接url安全碼的自動解碼(是會有某些瀏覽器或伺服器的支持度不夠好的)。這時就需要你在php端做urldecode的解碼工作,來恢復到常規的url B,從而打開這個常規url B。
3、如果鏈接A可用,就說明是在smarty中的escape確實是有了問題。那就不要使用這個方法。
4、另外,切記——(href=""),這個引號是必需要的。盡可能避開一些微妙的外在因素的干擾。你可以寫成<a href='{"urlceshi.php?name=leo&pwd=123"|escape:"url"}'

⑷ php中的escape是什麼意思

  • escape

    採用ISOLatin字元集對指定的字元串進行編碼。所有的空格符、標點符號、特殊字元以及其他非ASCII字元都將被轉化成%xx格式的字元編碼

    (xx等於該字元在字元集表裡面的編碼的16進制數字)。

⑸ php smarty 「 | 」 ,這個豎杠表示什麼

  1. 「|」 是變數修飾符與前面變數的間隔符號;

  2. 變數修飾符 escape(escape可用於將變數編碼或轉換成 html, url, 單引號, 十六進制, 十六進制實體, javascript 和 電郵地址。 默認是:html) ,在你的上面的截圖中escape的意思是:讓$bb中的字元串以html實體的格式輸出,

3. 示例:

如果$bb 這個變數是

'Hello'

那麼,它使用了修飾符 escape後的輸出將會是:

&#039;Hello&#039;

4. 資料頁面:

www.smarty.net/docs/zh_CN/language.modifier.escape.tpl

祝愉快!

⑹ escape解出來的是unicode編碼嗎

\u4E2D\u56FD或者%u4E2D%u56FD等字元是什麼意思?

這是UNICODE編碼,可以用JS的unescape函數解決,Java直接用System.out.println(); 打出來就可以了

下面具體介紹JS中這兩種函數的使用

1.escape方法
對String對象編碼以便它們能在所有計算機上可讀,
escape(charString)
必選項charstring參數是要編碼的任意String對象或文字。
說明

escape方法返回一個包含了charstring內容的字元串值(Unicode格式)。所有空格、標點、重音符號以及其他非ASCII字元都用%xx編碼代替,其中xx等於表示該字元的十六進制數。例如,空格返回的是"%20 "。

字元值大於 255 的以 %uxxxx 格式存儲

注意 :escape 方法不能夠用來對統一資源標示碼 (URI) 進行編碼。對其編碼應使用 encodeURI 和 encodeURIComponent 方法。

2.unescape 方法
解碼用escape()方法編碼的string對象
unescape(charstring)
必選項charstring參數是要解碼的String對象。
說明
unescape方法返回一個包含charstring內容的字元串值。所有以%xx十六進制形式編碼的字元都用ASCII字元集中等價的字元代替。

以 %uxxxx 格式(Unicode 字元)編碼的字元用十六進制編碼 xxxx 的 Unicode 字元代替.

⑺ PHP解密Unicode及Escape加密字元串

在json中不支持中文,用它傳送中文數據就會出現數據丟失或者亂碼,必須在傳送前對要發送的字元串進行編碼,由於傳送過去需要用js進行數據解析,考慮
到js中有unescape函數,故若在php中有個escape函數,對數據進行編碼,在客戶端用unescape進行
解碼,這樣就會方便很多。
本文給大家分享一個PHP解密Unicode及Escape加密字元串函數
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
?php
function
uni_decode($s)
{
preg_match_all('/#([0-9]{2,5});/',
$s,
$html_uni);
preg_match_all('/[%]u([0-9a-f]{4})/ie',
$s,
$js_uni);
$source
=
array_merge($html_uni[0],
$js_uni[0]);
$js
=
array();
for($i=0;$icount($js_uni[1]);$i++)
{
$js[]
=
hexdec($js_uni[1][$i]);
}
$utf8
=
array_merge($html_uni[1],
$js);
$code
=
$s;
for($j=0;$jcount($utf8);$j++)
{
$code
=
str_replace($source[$j],
unicode2utf8($utf8[$j]),
$code);
}
return
$code;//$s;//preg_replace('/u([0-9a-f]{4})/ie',
chr(hexdec('1')),
$s);
}
function
unicode2utf8($c)
{
$str=;
if
($c
0x80)
{
$str.=chr($c);
}
else
if
($c
0x800)
{
$str.=chr(0xc0
|
$c6);
$str.=chr(0x80
|
$c
0x3f);
}
else
if
($c
0x10000)
{
$str.=chr(0xe0
|
$c12);
$str.=chr(0x80
|
$c6
0x3f);
$str.=chr(0x80
|
$c
0x3f);
}
else
if
($c
0x200000)
{
$str.=chr(0xf0
|
$c18);
$str.=chr(0x80
|
$c12
0x3f);
$str.=chr(0x80
|
$c6
0x3f);
$str.=chr(0x80
|
$c
0x3f);
}
return
$str;
}
$str='%u5927%u5BB6%u597D%uFF0C我是孤魂!br
/';
echo
uni_decode($str);
//
大家好,我是孤魂!這是測試文本!
在網上搜索一把,很多用php實現的escape函數,大同小異
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function
phpescape($str){
preg_match_all(/[x80-xff].|[x01-x7f]+/,$str,$newstr);
$ar
=
$newstr[0];
foreach($ar
as
$k=$v){
if(ord($ar[$k])=127){
$tmpString=bin2hex(iconv(GBK,ucs-2,$v));
if
(!eregi(WIN,PHP_OS)){
$tmpString
=
substr($tmpString,2,2).substr($tmpString,0,2);
}
$reString.=%u.$tmpString;
}
else
{
$reString.=
rawurlencode($v);
}
}
return
$reString;
}
以上所述就是本文的全部內容了,希望大家能夠喜歡。

熱點內容
生化危機5配置要求怎麼樣 發布:2025-07-14 15:38:56 瀏覽:301
蘋果電話為什麼打不開密碼 發布:2025-07-14 15:33:45 瀏覽:45
安卓如何取消短消息通知 發布:2025-07-14 15:30:54 瀏覽:373
輿情監測演算法 發布:2025-07-14 15:29:19 瀏覽:14
android搜索聯系人 發布:2025-07-14 15:27:34 瀏覽:333
省唄上傳學歷 發布:2025-07-14 15:21:54 瀏覽:634
linux伺服器tomcat 發布:2025-07-14 15:19:41 瀏覽:192
東風風神奕炫max怎麼配置 發布:2025-07-14 15:13:44 瀏覽:747
蘋果安卓不知道到底怎麼選 發布:2025-07-14 15:07:52 瀏覽:926
資料庫spl 發布:2025-07-14 15:05:22 瀏覽:437