我有这样的输入:
$input = 'GFL/R&D/50/67289';
我正试图解决这个问题:
GFL$2fR$26D$2f50$2f67289
到目前为止,我最接近的是:
echo filter_var($input, FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_LOW)
产生:
GFL%2FR%26D%2F50%2F67289
如何从给定输入获得所需的输出以及结果是什么类型的编码?
那么请注意那里的案例敏感性。 $2f
是必需的,而不是$2F
。
答案 0 :(得分:2)
这将解决这个问题:url-encode,然后小写编码序列,并使用preg回调交换%
$
(PHP的PCRE不支持大小写转换修饰符):
$input = 'GFL/R&D/50/67289';
echo preg_replace_callback('/(%)([0-9A-F]{2})/', function ($m) {
return '$' . strtolower($m[2]);
}, urlencode($input));
输出:
GFL$2fR$26D$2f50$2f67289