ホームページ バックエンド開発 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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 でパラメータを渡すか、Web ページを要求する形式。 PHP には、このタスクを実行するための urlencode() 関数が用意されています。この記事では、urlencode() 関数の使用法を紹介し、具体的なコード例をいくつか示します。 1. 君

URLencode関数を使用してPHPでURLをエンコードする方法 URLencode関数を使用してPHPでURLをエンコードする方法 Jun 26, 2023 pm 12:48 PM

最新の開発では、URL を介してデータを渡すことが一般的な方法です。ただし、URL にはスペース、スラッシュ、疑問符などの特殊文字が含まれる場合があるため、これらの特殊文字によって URL の構造が破壊され、データ送信が失敗する原因になります。この状況を回避するために、PHP は URL を転送可能な形式にエンコードできる urlencode 関数を提供します。 urlencode 関数の使用は非常に簡単で、その構文は次のとおりです。

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 のエンコード Web アプリケーションを開発するとき、URL をエンコードする必要がある状況によく遭遇します。 URL エンコードにより、URL 内の特殊文字が正しく渡され、問題や不正確な結果が回避されます。 PHP では、urlencode() 関数を使用して URL エンコードを実行できます。 urlencode() 関数の機能は、文字列を URL 仕様に準拠したエンコード形式に変換することです。文字列内の英数字以外の文字を次のように変換します。

urlencode関数の使い方 urlencode関数の使い方 Nov 15, 2023 am 11:45 AM

使用法: 1. 辞書のエンコードに使用; 2. リストのエンコードに使用; 3. ネストされたリストのエンコードに使用; 4. 区切り文字などの指定

urllib.urlencode() 関数を使用して Python 2.x でパラメータをエンコードする方法 urllib.urlencode() 関数を使用して Python 2.x でパラメータをエンコードする方法 Jul 29, 2023 pm 12:57 PM

urllib.urlencode() 関数を使用して Python2.x でパラメータをエンコードする方法 プログラミング プロセス中、多くの場合、サーバーと対話してパラメータを渡す必要があります。パラメータを渡すプロセスでは、データの正しい送信と解析を保証するためにパラメータを適切にエンコードする必要があります。 Python は urllib ライブラリを提供します。このライブラリでは、urlencode() 関数がパラメータをエンコードするために使用されるツールです。 Python2.xを見てみましょう

urlencode 関数を使用して PHP で特殊文字をエンコードする方法 urlencode 関数を使用して PHP で特殊文字をエンコードする方法 Jun 26, 2023 pm 04:09 PM

PHP では、パラメーターを正しく渡すために、URL 内の特殊文字をエンコードする必要があることがよくあります。このとき、urlencode 関数を使用できます。 urlencode 関数の機能は、文字列内の特殊文字をエンコードして、URL に渡せるようにすることです。これらの特殊文字には、英数字、句読点、プロトコル文字、一部の予約文字などが含まれます。 urlencode 関数の基本構文は次のとおりです: urlencode(string$str):str

See all articles