好吧,所以我目前正在以一种简单的方式模仿PHP的urlencode()函数,使用JS的escape()和一些字符串替换.我纯粹是看键盘字符,所以没有特殊的ASCII或Unicode字符.我遇到的问题是特定字符*,+和/ all在RegExp中具有特殊含义,并且看作JavaScript String Object方法使用RegExp参数,我无法完全复制PHP的urlencode().那么,如何使用JS设法在字符串中替换这些字符呢?
背景信息:
escape()与urlencode()的差异
@::不转换,应该是%40
&:被认为是一个html实体,因此被转义为%26amp%3B而不是%26
*:未转换,应该是%2A
+:未转换,应该是%2B
/:未转换,应该是%2F
<:被认为是一个html实体,因此被转义为%26lt%3B而不是%3C
>:被认为是一个html实体,因此被转义为%26gt%3B而不是%3E
HTML实体转换非常简单
str.replace(/&/g, '%26').replace(/</g, '%3C').replace(/>/g, '%3E');
Run Code Online (Sandbox Code Playgroud)
并且@可以替换,因为它不是保留的RegExp字符.
*表示{0}条件
+表示{1}条件
/是基本的RegExp标记字符
感谢您的时间.