4

我尝试重新创建 URL 但找不到编码功能

编辑:
背景:该字符串用于 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";

尝试使用urlendoderawurlencode但它们替换了括号和“*”..

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

编辑
base64_encode - 销毁字符串 ..
htmlentities - 不进行更改..

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

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

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

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

4

1 回答 1

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

于 2013-11-08T11:43:28.287 回答