検索
ホームページphp教程php手册PHP 中国語 URL エンコードとデコード (urlencode()rawurlencode()

PHP 中国語 URL エンコードとデコード (urlencode()rawurlencode()

Jun 13, 2016 pm 12:15 PM
phpstringurlurlencode中国語はいデコード説明する詳しい

詳細な説明は次のとおりです。 ///\
string urlencode ( string str)
この文字列内の -_ を除くすべての英数字以外の文字は、その後に続くパーセント記号 (%) に置き換えられます。 2 つの 16 進数とスペースはプラス記号 ( ) としてエンコードされます。このエンコーディングは、WWW フォーム POST データのエンコーディングと同じであり、application/x-www-form-urlencoded メディア タイプと同じエンコーディングです。歴史的な理由により、このエンコードは、スペースをプラス記号 ( ) としてエンコードする点で RFC1738 エンコード (rawurlencode() を参照) とは異なります。この関数により、文字列のエンコードと URL のリクエスト部分での使用が容易になり、変数を次のページに渡すことも容易になります。 例 1. urlencode() 例

コードをコピー コードは次のとおりです:


echo '?>


注: HTML エンティティと一致する変数には注意してください。 &、©、£ などの文字はすべてブラウザによって解析され、予期される変数名が実際のエンティティに置き換えられます。これは明らかな混乱であり、W3C は数年前からこのことについて人々に警告してきました。参照アドレス: http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 PHP は、arg_separator .ini ディレクティブを通じて、パラメータ区切り文字を W3C が推奨するセミコロンに変更することをサポートしています。残念ながら、ほとんどのユーザー エージェントはフォーム データをセミコロン区切り形式で送信しません。より簡単な解決策は、区切り文字として & の代わりに & を使用することです。このために PHP の arg_separator を変更する必要はありません。そのままにして、htmlentities(urlencode($data)) を使用して URL をエンコードします。
例 2. urlencode() と htmlentities() の例

コードをコピー コードは次のとおりです:


< ;?php
echo ''


string urlencode (string str)
-_ を除くすべての非英数字をパーセント記号 (%) とその後に続く 2 つの 16 進数で置き換えた文字列を返します。 RFC 1738 で説明されているこのエンコーディングは、リテラル文字が特別な URL 区切り文字として解釈されないように保護し、トランスポート メディア (一部のメール システムなど) で使用される文字変換によって URL 形式が文字化けしないようにすることを目的としています。たとえば、FTP URL にパスワードを含める場合:
例 1. rawurlencode() 例 1

コードをコピーします コードは次のとおりです。次のように:

echo '';
?>


または、URL の PATH_INFO コンポーネントを通じて情報を渡したい場合:
例 2. rawurlencode() 例 2

コードをコピー コードは次のとおりです:

echo ''
?>

at デコードするときは、対応する urldecode() と rawurldecode() を使用できます。同様に、rawurldecode() はプラス記号 (' ') をスペースにデコードしませんが、urldecode() はデコードできます。 。 詳細な例を次に示します。
string urldecode ( string str)
指定されたエンコードされた文字列内の任意の %## をデコードします。デコードされた文字列を返します。 例 1. urldecode() の例


コードをコピー コードは次のとおりです。

$ a = 爆発 ('&', $QUERY_STRING);
$i = 0;
while ($i $b = split('=', $a) [$i ]);
echo 'パラメータの値 ', htmlspecialchars(urldecode($b[0])),
' は ', htmlspecialchars(urldecode($b[1])), "$i ;
}
?>


string rawurldecode ( string str) 文字列、パーセント記号 ( % を返します) ) に続く 2 つの 16 進数はリテラル文字に置き換えられます。
例 1. rawurldecode() 例


コードをコピー コードは次のとおりです:

echo rawurldecode('foo bar@baz') // foo bar@baz
?>
ただし、urldecode() と rawurldecode() によってデコードされた文字列は UTF-8 形式でエンコードされることに注意してください。URL に中国語が含まれており、ページ設定が UTF-8 ではない場合、デコードされた文字列は次のとおりである必要があります。正常に表示される前に変換されてしまいます。
もう 1 つ問題があります。つまり、取得された URL は %%nn n={0..F} の形式ではなく、%unnnn n={0..F} の形式になっています。この場合、urldecode() を使用しても rawurldecode() は正しくデコードできません。正しくデコードするには次の関数を使用する必要があります:

コードをコピー コードは次のとおりです。


関数 utf8RawUrlDecode ($source)
{
$decodedStr = "";
$len = strlen ($source);
while ($pos $charAt = substr ($source, $pos, 1);
if ($charAt == '%') {
$pos ;
$charAt = substr ($source, $pos, 1);
if ($charAt == 'u') {
// Unicode 文字を取得しました
$pos
$unicodeHexVal = substr ($source, $ pos, 4);
$entity = "" 。 = utf8_encode ($entity);
$pos = 4;
}
else {
// エスケープされた ASCII 文字があります
$hexVal = substr ($source, $pos, 2 );
$decodedStr .= chr (hexdec ($hexVal));
}
} else {
$decodedStr .= $charAt; pos ;
}
}
return $decodedStr;


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。