运行环境:php8.0
在使用商家【转账到支付宝账户】功能时报错: Required parameter $subnum follows optional parameter $n
这是因为 函数中参数设置问题:有默认值的参数 ,后面跟的参数必须也要有默认值
在支付宝sdk 中找到 下面两个文件 AopClient.php
AopCertClient.php
在上面两个文件中找到函数 splitCN
subCNchar
将参数 $n
后面的 $subnum
和 $charset
设置一个默认值就可以了。
如下:
function splitCN($cont, $n = 0, $subnum= 0, $charset = "gbk")
{
//$len = strlen($cont) / 3;
$arrr = array();
for ($i = $n; $i < strlen($cont); $i += $subnum) {
$res = $this->subCNchar($cont, $i, $subnum, $charset);
if (!empty ($res)) {
$arrr[] = $res;
}
}
return $arrr;
}
function subCNchar($str, $start = 0, $length = 30, $charset = "gbk")
{
if (strlen($str) <= $length) {
return $str;
}
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("", array_slice($match[0], $start, $length));
return $slice;
}
发布时间 : 2024-11-07,阅读量:86
, 分类:
PHP