1

urlencode された文字列をシステムに送信し、それをシステムに送り返していますが、URL エンコードされた文字には大文字ではなく小文字が含まれています。

各インスタンスを見つけて大文字に変更する簡単な方法はありますか?

これが例です

私が送っているもの:

6Vc6K83k%2FnBWb6sOfc0fcQiMOttpKJci9o%2B%2BdMBs0MCGJgQkgyr6zV%2FO8hqRATKW1uUYEs5zOqKso36x%2BydCc6

私が見返りに得るもの:

6Vc6K83k%2fnBWb6sOfc0fcQiMOttpKJci9o%2b%2bdMBs0MCGJgQkgyr6zV%2fO8hqRATKW1uUYEs5zOqKso36x%2bydCc6

ありがとう!

4

1 に答える 1

4

を使用して、対応する大文字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));作品はうまくいきます。

于 2013-10-25T16:59:39.750 に答える