Home Web Front-end JS Tutorial Using JavaScript to implement PHP's urlencode and urldecode functions_javascript skills

Using JavaScript to implement PHP's urlencode and urldecode functions_javascript skills

May 16, 2016 pm 03:45 PM
urldecode urlencode

很多朋友说JavaScript的decodeURI函数也可以实现,但有bug所有呢,下面看下下面的函数,经过测试使用暂时没什么问题,我在之前的文章说过,这个和php的urldecode函数根本不是一回事。下面是我根据高人的代码改写的JavaScript版的urldecode函数,参考的链接在开头提到的文章中有,就不一一列举了。和之前的urlencode函数一样,只实现了utf-8版的。

1、urlencode

使用方法: urlencode(str);

function urlencode(clearString) 
{
	var output = '';
	var x = 0;
	
	clearString = utf16to8(clearString.toString());
	var regex = /(^[a-zA-Z0-9-_.]*)/;

	while (x < clearString.length) 
	{
		var match = regex.exec(clearString.substr(x));
		if (match != null && match.length > 1 && match[1] != '') 
		{
			output += match[1];
			x += match[1].length;
		} 
		else 
		{
			if (clearString[x] == ' ')
				output += '+';
			else 
			{
				var charCode = clearString.charCodeAt(x);
				var hexVal = charCode.toString(16);
				output += '%' + ( hexVal.length < 2 &#63; '0' : '' ) + hexVal.toUpperCase();
			}
			x++;
		}
	}

	function utf16to8(str) 
	{
		var out, i, len, c;

		out = "";
		len = str.length;
		for(i = 0; i < len; i++) 
		{
			c = str.charCodeAt(i);
			if ((c >= 0x0001) && (c <= 0x007F)) 
			{
				out += str.charAt(i);
			} 
			else if (c > 0x07FF) 
			{
				out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
				out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
				out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
			} 
			else 
			{
				out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
				out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
			}
		}
		return out;
	}

	return output;
}
Copy after login

2、urldecode

使用方法:urldecode(url);

function urldecode(encodedString)
{
	var output = encodedString;
	var binVal, thisString;
	var myregexp = /(%[^%]{2})/;
	function utf8to16(str)
	{
		var out, i, len, c;
		var char2, char3;

		out = "";
		len = str.length;
		i = 0;
		while(i < len) 
		{
			c = str.charCodeAt(i++);
			switch(c >> 4)
			{ 
				case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
				out += str.charAt(i-1);
				break;
				case 12: case 13:
				char2 = str.charCodeAt(i++);
				out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
				break;
				case 14:
				char2 = str.charCodeAt(i++);
				char3 = str.charCodeAt(i++);
				out += String.fromCharCode(((c & 0x0F) << 12) |
						((char2 & 0x3F) << 6) |
						((char3 & 0x3F) << 0));
				break;
			}
		}
		return out;
	}
	while((match = myregexp.exec(output)) != null
				&& match.length > 1
				&& match[1] != '')
	{
		binVal = parseInt(match[1].substr(1),16);
		thisString = String.fromCharCode(binVal);
		output = output.replace(match[1], thisString);
	}
	
	//output = utf8to16(output);
	output = output.replace(/\\+/g, " ");
	output = utf8to16(output);
	return output;
}
Copy after login

当服务器端通过php的urlencode转码的就可以使用js的urldecode进行解析即可。

Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP's urldecode() function: How to decode a URL-encoded string into a raw string and handle decoding errors PHP's urldecode() function: How to decode a URL-encoded string into a raw string and handle decoding errors Nov 03, 2023 pm 03:17 PM

PHP's urldecode() function was created in PHP4 and is a common URL decoding method. URL encoding is a method of converting non-English characters in a URL into special characters in order to transmit the URL to the server or otherwise process the URL. The urldecode() function restores these special characters to the original string. The syntax of this function is: stringurldecode(string$str) parameter str represents the character that needs to be decoded

PHP's urlencode() function: How to encode a string into a URL-safe format PHP's urlencode() function: How to encode a string into a URL-safe format Nov 03, 2023 pm 12:39 PM

PHP's urlencode() function: How to encode a string into a URL-safe format, specific code examples are needed. With the development of the Internet, URLs are widely used in daily life, and we often need to encode strings with some special characters into URL-safe formats. Format to pass parameters in the URL or request a web page. PHP provides the urlencode() function to accomplish this task. This article will introduce the usage of urlencode() function and give some specific code examples. 1. ur

How to use urlencode function to encode URL in PHP How to use urlencode function to encode URL in PHP Jun 26, 2023 pm 12:48 PM

In modern development, passing data through URLs is a common way. However, because the URL may contain some special characters, such as spaces, slashes, and question marks, these special characters will destroy the structure of the URL and cause data transmission to fail. In order to avoid this situation, PHP provides the urlencode function, which can encode the URL into a transportable format. The use of the urlencode function is very simple. Its syntax is as follows: stringurlencode(string

The urldecode() function in PHP is used to decode URLs The urldecode() function in PHP is used to decode URLs Nov 18, 2023 am 10:07 AM

The urldecode() function in PHP is used to decode the URL and restore the escaped characters to the original characters. When processing parameters in the URL, you often need to use the urldecode() function. The syntax of the urldecode() function is as follows: stringurldecode(string$str) where $str is the URL string to be decoded. The urldecode() function will replace %xx in the string with the corresponding characters, xx

Introduction to PHP functions—urlencode(): encode URLs Introduction to PHP functions—urlencode(): encode URLs Jul 25, 2023 pm 09:25 PM

Introduction to PHP functions—urlencode(): Encoding URLs When developing web applications, you often encounter situations where URLs need to be encoded. URL encoding ensures that special characters in URLs are passed correctly, avoiding problems or incorrect results. In PHP, we can use the urlencode() function to perform URL encoding. The function of urlencode() function is to convert the string into an encoding format that conforms to the URL specification. It converts non-alphanumeric characters in a string to

How to use urlencode function How to use urlencode function Nov 15, 2023 am 11:45 AM

Usage: 1. Used to encode dictionary; 2. Used to encode list; 3. Used to encode nested list; 4. Specify separator, etc.

How to use the urllib.urlencode() function to encode parameters in Python 2.x How to use the urllib.urlencode() function to encode parameters in Python 2.x Jul 29, 2023 pm 12:57 PM

How to use the urllib.urlencode() function to encode parameters in Python2.x During the programming process, we often need to interact with the server and pass parameters. In the process of passing parameters, we need to properly encode the parameters to ensure the correct transmission and parsing of data. Python provides the urllib library, in which the urlencode() function is a tool used to encode parameters. Let's take a look at Python2.x

How to use the urlencode function to encode special characters in PHP How to use the urlencode function to encode special characters in PHP Jun 26, 2023 pm 04:09 PM

In PHP, we often need to encode special characters in the URL in order to pass parameters correctly. At this time, you can use the urlencode function. The function of the urlencode function is to encode special characters in the string so that they can be passed in the URL. These special characters include: alphanumeric characters, punctuation marks, protocol characters, some reserved characters, etc. The following is the basic syntax of the urlencode function: urlencode(string$str):str

See all articles