首頁 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