这是什么编码,如何在PHP中编码字符串?

时间:2014-10-29 15:19:42

标签: php character-encoding

我有这样的输入:

$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

1 个答案:

答案 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