Home  >  Article  >  Backend Development  >  php urlencode() function implements URL encoding analysis_PHP tutorial

php urlencode() function implements URL encoding analysis_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:57:181141browse

The urlencode() function in PHP is to convert Chinese into string encoding, so that it will not cause the Chinese URL to be garbled or wrong when opened in the browser. Let me introduce to you how to use urlencode() Coding is some nuts and bolts.

urlencode
(PHP 4, PHP 5)

urlencode — encode a URL string

Report a bug Description
string urlencode ( string $str )
This function makes it easy to encode a string and use it in the request part of the URL, and it also makes it easy to pass variables to the next page.

Report a bug parameter

str
The string to encode.

Report a bug return value

Returns a string in which all non-alphanumeric characters except -_. will be replaced with a percent sign (%) followed by two hexadecimal digits, and spaces are encoded as plus signs ( +). This encoding is the same as the encoding of WWW form POST data, and the same encoding as the application/x-www-form-urlencoded media type. For historical reasons, this encoding differs from the RFC1738 encoding (see rawurlencode()) in encoding spaces as plus signs (+).

What is URLEncode:

This tool implements two methods of Encode and Decode respectively.

Chinese -> Encode of GB2312 -> %D6%D0%CE%C4
Chinese -> UTF-8 Encode -> %E4%B8%AD%E6%96%87

URLEncode in Html:
In the html file encoded as GB2312,
/中文.rar -> The browser automatically converts to -> /%D6%D0%CE%C4.rar
Note: Firefox does not have good support for Chinese URLs in GB2312 Encode because it sends URLs in UTF-8 encoding by default, but the ftp:// protocol is fine. I tried it. I think this should be regarded as a bug in Firefox.

In the html file encoded as UTF-8,
/中文.rar -> The browser automatically converts to -> /%E4%B8%AD%E6%96%87.rar

URLEncode in PHP:

The code is as follows Copy code
 代码如下 复制代码

//GB2312的Encode
echo urlencode(“中文-_. “).”n”; //%D6%D0%CE%C4-_.+
echo urldecode(“%D6%D0%CE%C4-_. “).”n”; //中文-_.
echo rawurlencode(“中文-_. “).”n”; //%D6%D0%CE%C4-_.%20
echo rawurldecode(“%D6%D0%CE%C4-_. “).”n”; //中文-_.
?>

//Encode of GB2312

echo urlencode("中文-_. ")."n"; //%D6%D0%CE%C4-_.+
echo urldecode(“%D6%D0%CE%C4-_. “).”n”; //Chinese-_.
echo rawurlencode("中文-_. ")."n"; //%D6%D0%CE%C4-_.%20
echo rawurldecode(“%D6%D0%CE%C4-_. “).”n”; //Chinese-_.

?>

All non-alphanumeric characters except -_. will be replaced with a percent sign (%) followed by two hexadecimal digits. The difference between urlencode and rawurlencode: urlencode encodes spaces as plus signs (+)

rawurlencode encodes spaces as plus signs (%20)

If you want to use UTF-8 Encode, there are two methods:
 代码如下 复制代码

$url = ‘/中文.rar’;
echo urlencode(mb_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”n”;
echo rawurlencode(mb_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”n”;
//http%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar
?>

 代码如下 复制代码

function parseurl($url=”")
{
$url = rawurlencode(mb_convert_encoding($url, ‘gb2312′, ‘utf-8′));
$a = array(“%3A”, “%2F”, “%40″);
$b = array(“:”, “/”, “@”);
$url = str_replace($a, $b, $url);
return $url;
}
$url=”ftp://ud03:password@ud03.kinoko.name/中文/中文.rar”;
echo parseurl($url);
//ftp://ud03:password@ud03.kinoko.name/%D6%D0%CE%C4/%D6%D0%CE%C4.rar
?>

1. Save the file as a UTF-8 file and use urlencode or rawurlencode directly. 2. Use the mb_convert_encoding function.
The code is as follows Copy code
$url = ‘/中文.rar’; echo urlencode(mb_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”n”; echo rawurlencode(mb_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”n”; //http%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar ?>
Example:
The code is as follows Copy code
function parseurl($url=””) { $url = rawurlencode(mb_convert_encoding($url, ‘gb2312′, ‘utf-8′)); $a = array(“%3A”, “%2F”, “%40″); $b = array(“:”, “/”, “@”); $url = str_replace($a, $b, $url); return $url; } $url=”ftp://ud03:password@ud03.kinoko.name/中文/中文.rar”; echo parseurl($url); //ftp://ud03:password@ud03.kinoko.name/%D6%D0%CE%C4/%D6%D0%CE%C4.rar ?>

URLEncode in JavaScript:

The code is as follows
 代码如下 复制代码

%E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20

Copy code

 代码如下 复制代码

/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar

%E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20


encodeURI does not encode the following characters: ":", "/", ";", "?", "@" and other special characters.

The code is as follows Copy code


/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar
Note:

PHP supports changing the parameter separator to the semicolon recommended by W3C through the arg_separator.ini directive. Unfortunately most user agents do not send form data in semicolon delimited format. A simpler solution is to use & instead of & as the delimiter. You don't need to modify PHP's arg_separator for this. Leave it still & and just use htmlentities() or htmlspecialchars() to encode your URL.
http://www.bkjia.com/PHPjc/632093.html
www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/632093.htmlTechArticleIn php, the urlencode() function is to convert Chinese into string encoding, so that it will not cause Chinese URLs There are problems with garbled characters or errors when opening in the browser. Let me introduce to you how to use...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn