首页 web前端 js教程 用JavaScript实现PHP的urlencode与urldecode函数_javascript技巧

用JavaScript实现PHP的urlencode与urldecode函数_javascript技巧

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;
}
登录后复制

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;
}
登录后复制

当服务器端通过php的urlencode转码的就可以使用js的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