У меня есть такой вклад:
$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
,
Это сделает трюк: 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
Других решений пока нет …