1、生成获取随机字符串
public function createNonceStr()
{
// 密码字符集,可任意添加你需要的字符
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$pass = "";
for ($i = 0; $i < 16; $i++) {
// 这里提供两种字符获取方式
// 第一种是使用 substr 截取$chars中的任意一位字符;
// 第二种是取字符数组 $chars 的任意元素
$pass .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $pass;
}
2、字符串排序并进行拼接
public function sortMap($map)
{
ksort($map);
$data = [];
foreach ($map as $key => $val) {
$data[] = $key . '=' . $val;
}
return implode('&', $data);
}
3、对于加密情况下,sign签名的拼接
public function ToUrlParams($urlObj)
{
$buff = "";
foreach ($urlObj as $k => $v)
{
if($k != "sign"){
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
4、sign 的md5加密
public function sign($params,$key){
$new_sign = $params."&key=".$key;
$md5_sign = md5($new_sign);
return $md5_sign;
}
5、数组转换成xml格式的字符串
public function array2xml($arr, $level = 1)
{
$s = $level == 1 ? "<xml>" : '';
foreach ($arr as $tagname => $value) {
if (is_numeric($tagname)) {
$tagname = $value['TagName'];
unset($value['TagName']);
}
if (!is_array($value)) {
$s .= "<{$tagname}>" . (!is_numeric($value) ? '<![CDATA[' : '') . $value . (!is_numeric($value) ? ']]>' : '') . "</{$tagname}>";
} else {
$s .= "<{$tagname}>" . $this->array2xml($value, $level + 1) . "</{$tagname}>";
}
}
$s = preg_replace("/([\x01-\x08\x0b-\x0c\x0e-\x1f])+/", ' ', $s);
return $level == 1 ? $s . "</xml>" : $s;
}
6、生成随机字符串可以用来生成不重复的订单号
function random_str($length){
$str = null;
// 保证不会有重复订单号存在
while(true) {
$strPol = "ABCDEFGHJKMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz";//大小写字母以及数字
$max = strlen($strPol)-1;
for($i=0;$i<$length;$i++){
$str.=$strPol[rand(0,$max)];
}
// 随机数
$order_sn_count = M('你的表名')->where([
"order_sn"=>$str
])->count();
if($order_sn_count == 0)
break;
}
return $str;
}