urlencode的PHP系统变更案例
我正在向一个系统发送一个URL编码的字符串,然后他们将该字符串发送回我,但是URL编码的字符中有一个小写字符,而不是大写字符 有没有一种简单的方法让我找到每个实例并将其改为大写 这里有一个例子 我要发送的内容:urlencode的PHP系统变更案例,php,Php,我正在向一个系统发送一个URL编码的字符串,然后他们将该字符串发送回我,但是URL编码的字符中有一个小写字符,而不是大写字符 有没有一种简单的方法让我找到每个实例并将其改为大写 这里有一个例子 我要发送的内容: 6Vc6K83k%2FnBWb6sOfc0fcQiMOttpKJci9o%2B%2BdMBs0MCGJgQkgyr6zV%2FO8hqRATKW1uUYEs5zOqKso36x%2BydCc6 我得到的回报: 6Vc6K83k%2fnBWb6sOfc0fcQiMOttpKJci9o%2
6Vc6K83k%2FnBWb6sOfc0fcQiMOttpKJci9o%2B%2BdMBs0MCGJgQkgyr6zV%2FO8hqRATKW1uUYEs5zOqKso36x%2BydCc6
我得到的回报:6Vc6K83k%2fnBWb6sOfc0fcQiMOttpKJci9o%2b%2bdMBs0MCGJgQkgyr6zV%2fO8hqRATKW1uUYEs5zOqKso36x%2bydCc6
谢谢 使用
preg\u replace\u callback
并将/%[a-zA-Z0-9]{2}/
替换为其大写等价物,使用strtoupper
:
5.3+:
小于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);
演示
产出:
字符串(96)“6Vc6K83k%2FnBwB6SOFCQimottpKJCI9O%2BdMBs0MCGJgQkgyr6zV%2FO8QRATKW1UYES 5ZOQKSO36X%2BYDC6”
或者,'s
$string=urlencode(urldecode($string))代码>工作正常。使用preg_replace_callback
并将/%[a-zA-Z0-9]{2}/
替换为其大写等价物,使用strtoupper
:
5.3+:
小于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);
演示
产出:
字符串(96)“6Vc6K83k%2FnBwB6SOFCQimottpKJCI9O%2BdMBs0MCGJgQkgyr6zV%2FO8QRATKW1UYES 5ZOQKSO36X%2BYDC6”
或者,'s$string=urlencode(urldecode($string))代码>工作正常。为什么需要更改它?听起来你是在试图完全解决另一个问题的症状。因为这些信息是一个半加密的散列,它扰乱了接收端的解密方法。也许url对其进行解码,然后再对其进行url编码?如果解码步骤成功生成原始字符串,则对其重新编码应产生与原始发送的值相同的值。为什么需要更改?听起来你是在试图完全解决另一个问题的症状。因为这些信息是一个半加密的散列,它扰乱了接收端的解密方法。也许url对其进行解码,然后再对其进行url编码?如果解码步骤成功地生成了原始字符串,那么对其重新编码将产生与最初发送的值相同的值。
<?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);
?>