我正在向系统发送一个urlen编码的字符串,然后他们将其发回给我,但是URL编码的字符中有小写而不是大写字符。
有没有一种简单的方法可以找到每个实例并将其更改为大写?
下面是一个示例
我要发送的内容:
6Vc6K83k%2FnBWb6sOfc0fcQiMOttpKJci9o%2B%2BdMBs0MCGJgQkgyr6zV%2FO8hqRATKW1uUYEs5zOqKso36x%2BydCc6
我得到的回报:
6Vc6K83k%2fnBWb6sOfc0fcQiMOttpKJci9o%2b%2bdMBs0MCGJgQkgyr6zV%2fO8hqRATKW1uUYEs5zOqKso36x%2bydCc6
谢谢!
使用 preg_replace_callback
并使用 strtoupper
将 /%[a-zA-Z0-9]{2}/
替换为其大写等效项:
5.3+:
$string = preg_replace_callback('/%[a-zA-Z0-9]{2}/', function($match) {
return strtoupper($match[0]);
}, $string);
低于 5.3:
function preg_replace_callback_uppercaser($match) {
return strtoupper($match[0]);
}
$string = preg_replace_callback('/%[a-zA-Z0-9]{2}/', 'preg_replace_callback_uppercaser', $string);
演示
<?php
$string = '6Vc6K83k%2fnBWb6sOfc0fcQiMOttpKJci9o%2b%2bdMBs0MCGJgQkgyr6zV%2fO8hqRATKW1uUYEs5zOqKso36x%2bydCc6';
$string = preg_replace_callback('/%[a-zA-Z0-9]{2}/', function($match) {
return strtoupper($match[0]);
}, $string);
var_dump($string);
?>
输出:
string(96) "6Vc6K83k%2FnBWb6sOfc0fcQiMOttpKJci9o%2B%2BdMBs0MCGJgQkgyr6zV%2FO8hqRATKW1uUYEs5zOqKso36x%2BydCc6"
链接到现场演示
或者,大卫的$string = urlencode(urldecode($string));
工作正常。