首頁 後端開發 php教程 php urlencode()与urldecode()函数字符编码原理详解_php技巧

php urlencode()与urldecode()函数字符编码原理详解_php技巧

May 17, 2016 am 09:14 AM
urldecode urlencode

其原理就是把中文字符转换为十六进制并按某种规则进行字符串组合,实现字符的编码与解编码,保证URL数据传递过程中字符的完整性和兼容性,主要讨论中文字符的编码情况。

一,FireFox浏览器编码中文字符

在Firefox浏览器下如果输入中文字符,将会自动实现URL编码,如下

按下Enter键前
php-internet-url-encode-before
按下Enter键后
php-internet-url-encode

二,urlencode()函数原理

urlencode()函数用于编码URL字符串,这里主要讨论中文字符的编码情况,

实例如下

复制代码 代码如下:

echo urlencode('不要迷恋哥');//输出:%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7

urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%,了解了这个原理,可以实现自定义的URL编码函数,代码如下
复制代码 代码如下:

$string = "不要迷恋哥";
$length = strlen($string);
echo $string;
$result = array();
//十进制
for($i=0;$iif(ord($string[$i])>127){
$result[] = ord($string[$i]).' '.ord($string[++$i]);
}
}
var_dump($result);
//十六进制
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = "%".dechex($dec[0])." "."%".dechex($dec[1]);
}
var_dump($strings);

php-self-urlencode

上面代码在[PHP实现中文字符进制转换原理分析]一文中中文字符转十六进制原理分析部分有详细讨论,通过获取汉字的各个字符再转换为十六进制,同时在每个字符前面加上一个特殊的标识符%,就实现了urlencode()函数的功能,输出结果如下
然后对输出的结果与直接使用urlencode()编码的字符进行比较,如上:%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7

通过上面实例可知,使用urlencode()函数编码中文字符实质上就是把字符转换为十六进制再在第个字符左边加上一个特殊的标识符%

三,urldecode()函数原理

使用urldecode()函数解码已编码的 URL 字符串,实例如下

echo urldecode('%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7');//输出:不要迷恋哥
urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符,结合上面实例,同样可实现自定义函数解码字符串
复制代码 代码如下:

$string = '%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7';
$length = strlen($string);
$hexs = array();
for($i=0;$iif($string[$i] == '%'){
$hexs[] = $string[++$i].$string[++$i];
}
}
$num = count($hexs);
for($i=0;$iecho chr(hexdec($hexs[$i])).chr(hexdec($hexs[++$i]));
}

上面实例代码首先按字符串的规则取出各个字符的十六进制,然后使用hexdec()函数把十六进制转换为十进制,然后再使用chr()函数把十进制转换为字符,实现十六进制转换为字符。输出结果如下

php-self-urldecode

四,urldecode()与urlencode()函数说明

urlencode
(PHP 3, PHP 4, PHP 5)
urlencode -- 编码 URL 字符串
说明
string urlencode ( string str )
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。此函数便于将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页

urldecode
(PHP 3, PHP 4, PHP 5)
urldecode -- 解码已编码的 URL 字符串
说明
string urldecode ( string str )
解码给出的已编码字符串中的任何 %##。返回解码后的字符串。

五,参考资源
urlencode()说明
urldecode()说明
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP的urldecode()函數:如何將URL編碼的字串解碼為原始字串並處理解碼錯誤 PHP的urldecode()函數:如何將URL編碼的字串解碼為原始字串並處理解碼錯誤 Nov 03, 2023 pm 03:17 PM

PHP的urldecode()函數創建於PHP4,是常見的URL解碼方法。 URL編碼是一種將URL中的非英文字元轉換為特殊字元的方法,以便將URL傳輸到伺服器或以其他方式處理URL。而urldecode()函數則是將這些特殊字元還原為原始的字串。此函數的語法為:stringurldecode(string$str)參數str表示需要解碼的字符

PHP的urlencode()函數:如何將字串編碼為URL安全格式 PHP的urlencode()函數:如何將字串編碼為URL安全格式 Nov 03, 2023 pm 12:39 PM

PHP的urlencode()函數:如何將字串編碼為URL安全格式,需要具體程式碼範例隨著網路的發展,URL在日常生活中被廣泛使用,我們經常需要將一些特殊字元的字串編碼為URL安全格式,以便在URL中傳遞參數或請求網頁。 PHP中提供了urlencode()函數來完成這個任務。本文將介紹urlencode()函數的用法,並給出一些具體的程式碼範例。一、ur

PHP中如何使用urlencode函數對URL進行編碼 PHP中如何使用urlencode函數對URL進行編碼 Jun 26, 2023 pm 12:48 PM

在現代開發中,將資料透過URL進行傳遞是一種常見的方式。然而,由於URL中可能含有一些特殊字符,例如空格、斜杠和問號等,這些特殊字符會破壞URL的結構,導致傳輸資料失敗。為了避免這種情況的發生,PHP提供了urlencode函數,可以將URL編碼為可傳輸的格式。 urlencode函數的使用非常簡單,它的語法如下:stringurlencode(string

PHP中的urldecode()函數用於對URL進行解碼 PHP中的urldecode()函數用於對URL進行解碼 Nov 18, 2023 am 10:07 AM

PHP中的urldecode()函數用於對URL進行解碼,將被轉義的字元恢復為原始字元。在處理URL中的參數時,經常需要使用urldecode()函數。 urldecode()函數的語法如下:stringurldecode(string$str)其中,$str是要解碼的URL字串。 urldecode()函數會將字串中的%xx替換為對應的字符,xx

PHP函數介紹—urlencode(): 對URL進行編碼 PHP函數介紹—urlencode(): 對URL進行編碼 Jul 25, 2023 pm 09:25 PM

PHP函數介紹—urlencode():對URL進行編碼在開發網頁應用程式時,常常會遇到需要對URL進行編碼的情況。 URL編碼可確保URL中的特殊字元正確傳遞,避免問題或錯誤的結果。在PHP中,我們可以使用urlencode()函數來進行URL編碼。 urlencode()函數的作用是將字串轉換為符合URL規範的編碼格式。它將字串中的非字母數字字元轉

urlencode函數怎麼用 urlencode函數怎麼用 Nov 15, 2023 am 11:45 AM

用法有:1、用於編碼字典;2、用於編碼清單;3、用於編碼巢狀清單;4、指定分隔符號等等。

Python 2.x 中如何使用urllib.urlencode()函數對參數進行編碼 Python 2.x 中如何使用urllib.urlencode()函數對參數進行編碼 Jul 29, 2023 pm 12:57 PM

Python2.x中如何使用urllib.urlencode()函數對參數進行編碼在程式設計過程中,我們經常需要與伺服器互動並傳遞參數。而傳遞參數的過程中,我們需要對參數進行適當的編碼,以確保資料的正確傳輸和解析。 Python提供了urllib函式庫,其中的urlencode()函數就是用來對參數進行編碼的工具。下面我們就來看看在Python2.x

PHP中如何使用urlencode函數將特殊字元進行編碼 PHP中如何使用urlencode函數將特殊字元進行編碼 Jun 26, 2023 pm 04:09 PM

在PHP中,我們經常需要將URL中的特殊字元進行編碼,以便正確地傳遞參數。這時候就可以使用urlencode函數。 urlencode函數的作用就是將字串中的特殊字元進行編碼,以便在URL中傳遞。這些特殊字元包括:字母數字字元、標點符號、協議字元、部分保留字元等。以下是urlencode函數的基本語法:urlencode(string$str):str

See all articles