特定于URL的编码

时间:2013-11-05 08:01:43

标签: php

我尝试重新创建一个网址但找不到编码功能

修改
背景: 该字符串用于API(没有文档的文档),我尝试使用 rawurlencode 但似乎只有原始的编码/解码函数工作,所以我必须找到它是什么......

$input = "2/3*( ((word*888) )>(word2 AND ((word3*888))/word4>888";

$encoded = "2/3*(%20((word*888)%20)%3E(word2%20AND%20((word3*888))/word4%3E2888";

尝试使用 urlendode rawurlencode ,但他们会替换括号和“*”..

为PHP的URL创建字符串(可能是Javascript)。

修改
base64_encode - 销毁字符串..
htmlentities - 没有进行更改..

不寻找“最佳网址编码功能”..只需重新创建没有自定义替换功能的示例。

EDIT3
好的我做了一些更多的调试,这是替换表的大部分内容:

% - %25
^ - %5E
+ - %2B
{ - %7B
[ - %5B
} - %7D
] - %5D
“ - %22
| - %7C
\ - %5C
< - %3C
> - %3E
“” - %20

可能是SQL的某种转义,后来该字符串转换为查询。

1 个答案:

答案 0 :(得分:1)

您正在寻找JavaScript encodeURI()函数的PHP实现。我们走了:

function encodeURI($uri)
{
    return preg_replace_callback("{[^0-9a-z_.!~*'();,/?:@&=+$#]}i", function ($m) {
            return sprintf('%%%02X', ord($m[0]));
        }, $uri);
}

现在你的确拥有你想要的东西。

演示:https://eval.in/65314