を使用して、対応する大文字preg_replace_callback
に置き換えます。/%[a-zA-Z0-9]{2}/
strtoupper
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);
?>
出力:
文字列(96) "6Vc6K83k%2FnBWb6sOfc0fcQiMOttpKJci9o%2B%2BdMBs0MCGJgQkgyr6zV%2FO8hqRATKW1uUYEs5zOqKso36x%2BydCc6"
ライブデモへのリンク
あるいは、Davidの$string = urlencode(urldecode($string));
作品はうまくいきます。