php实用函数

//curl post 请求
function httpPost($url,$data='',$header=['Content-type:text/json']) {
$ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL, $url);//设置链接
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//设置HTTP头
curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//POST数据
$res = curl_exec($ch);//接收返回信息

curl_close($ch); //关闭curl链接
return $res;
}

//curl get 请求
function httpGet($url,$header=array()) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//如果成功只将结果返回,不自动输出任何内容。
curl_setopt($curl, CURLOPT_TIMEOUT, 500); //作为最大延续500毫秒,超过这个时间将不去读取页面

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//不检测服务器的证书是否由正规浏览器认证过的授权CA颁发

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);//不检测服务器的域名与证书上的是否一致

curl_setopt($curl, CURLOPT_URL, $url);//设置提交地址路径

$res = curl_exec($curl);//执行,并接收返回结果

curl_close($curl);//关闭.

return $res;
}

//递归创建目录
function mkdirs($path) {
if (!is_dir($path)) {
mkdirs(dirname($path));
mkdir($path);
}
return is_dir($path);
}
//ASCII排序拼接sign
function mk_wx_sign($data,$pay_key){
unset($data['sign']);
ksort($data);
$url=http_build_query($data);
$signurl = urldecode($url);
$stringSignTemp="$signurl&key=".$pay_key;
return strtoupper(md5($stringSignTemp));
}
//数组转XML
function arrayToXml($arr){
$xml = "<xml>";
foreach ($arr as $key=>$val) {
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</xml>";
return $xml;
}
//将XML转为array
function xmlToArray($xml){
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $values;
}
// 生成随机字符串
function random_string($length){
//生成一个包含 大写英文字母, 小写英文字母, 数字 的数组
$arr = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
$str = '';
$arr_len = count($arr);
for ($i = 0; $i < $length; $i++)
{
$rand = mt_rand(0, $arr_len-1);
$str.=$arr[$rand];
}
return $str;
}
//ecshop计算不同等级的会员价
function level_price($rank,$res){
foreach($rank as $k=>$v){
         $res['rank_price'][$k]['rank_name']=$v['rank_name'];
          $res['rank_price'][$k]['rank_price']=sprintf('%.2f',floor($res['shop_price']*$v['discount']+0.5)/100);
}
 }
//php内容过滤规则
function inject_check($str) {
$check = preg_match('/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/i', $str);
Return $check;
}
//将时间戳转换为"Y-m-d H:i:s"格式的函数
protected function timeToString(array $arr,array $fields,$format="Y-m-d H:i:s"){
foreach($arr as $k=>$v){
foreach($fields as $kk=>$vv){
$arr[$k][$fields[$kk]]=date($format,$v[$fields[$kk]]);
}
}
return $arr;
}
//将"Y-m-d H:i:s"转换为时间戳格式的函数
protected function stringToTime(array $arr,array $fields){
foreach($arr as $k=>$v){
foreach($fields as $kk=>$vv){
$arr[$k][$fields[$kk]]=strtotime($v[$fields[$kk]]);
}
}
return $arr;
}
//将时间戳转换为周(星期)
function getWeek($unixTime='')
{
$unixTime=is_numeric($unixTime) ? $unixTime : time();
$weekarray=array('日','一','二','三','四','五','六');
return '周'.$weekarray[date('w',$unixTime)];
}
=========================签名算法===================
/*
* 检查签名
*/
protected function check_sign(){
$get_data = I('get.');
$post_data = I('post.');
$data = array_merge($get_data,$post_data);
unset($data['sign']);//去掉sign
$rs['status'] = 60331;
$sign = I('sign');
$make_sign_result = $this->make_sign($data);
if($sign != $make_sign_result){
$rs['message'] = C('error_60331');
echo json_encode($rs);
die();
}
}
/*
* 生成签名
*/
protected function make_sign($data){
$data['salt'] = md5(sha1(C('salt')));
ksort($data);//键值按ASII码排序
$string = strtoupper($this->ToUrlParams($data));//小写转大写
$sign = md5(sha1($string));
return $sign;
}
/*
* 数组转字url符串
*/
protected function ToUrlParams($data){
$buff = "";
foreach ($data as $k => $v)
{
if($k != "sign" && $v != "" && !is_array($v)){//过滤掉sign
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
trim($res, "\xEF\xBB\xBF");//去bom头,兼容各种系统
//生成uuid
function create_uuid($pre = ""){
$str = md5(uniqid(mt_rand(), true));
$uuid = substr($str,0,8) . '-';
$uuid .= substr($str,8,4) . '-';
$uuid .= substr($str,12,4) . '-';
$uuid .= substr($str,16,4) . '-';
$uuid .= substr($str,20,12);
return $pre . $uuid;
}
//回调地址
$back_act = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : __HOST__ . $_SERVER['REQUEST_URI']);
//判断是否post提交
function is_post(){
return isset($_SERVER['REQUEST_METHOD']) && strtoupper($_SERVER['REQUEST_METHOD'])=='POST';
}
//判断手机
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
$uachar = '/(nokia|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|mobile)/i';
if ((($ua == '') || preg_match($uachar, $ua)) && !strpos(strtolower($_SERVER['REQUEST_URI']), 'wap')) {
$Loaction = 'mobile/';

if (!empty($Loaction)) {
ecs_header('Location: ' . $Loaction . "\n");
exit();
}
}
/**
* 从html内容中筛选链接
* @param string $web_content
* @return array
*/
function _filterUrl($web_content) {
$reg_tag_a = '/<[a|A].*?href=[\'\"]{0,1}([^>\'\"\ ]*).*?>/';
$result = preg_match_all($reg_tag_a, $web_content, $match_result);
if ($result) {
return $match_result[1];
}
}

/**
* 修正相对路径
*
* @param string $base_url
* @param array $url_list
* @return array
*/
function _reviseUrl($base_url, $url_list) {
$url_info = parse_url($base_url);//解析url
$base_url = $url_info["scheme"] . '://';
if ($url_info["user"] && $url_info["pass"]) {
$base_url .= $url_info["user"] . ":" . $url_info["pass"] . "@";
}
$base_url .= $url_info["host"];
if ($url_info["port"]) {
$base_url .= ":" . $url_info["port"];
}
$base_url .= $url_info["path"];
if (is_array($url_list)) {
foreach ($url_list as $url_item) {
if (preg_match('/^http/', $url_item)) {
// 已经是完整的url
$result[] = $url_item;
} else {
// 不完整的url
$real_url = $base_url . '/' . $url_item;
$result[] = $real_url;
}
}
return $result;
} else {
return false;
}
}
//二维数组排序
function my_sort($arrays,$sort_key,$sort_order=SORT_DESC,$sort_type=SORT_NUMERIC){
if(is_array($arrays)){
foreach ($arrays as $array){
if(is_array($array)){
$key_arrays[] = $array[$sort_key];
}else{
return false;
}
}
}else{
return false;
}
array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
return $arrays;
}
function readBinFile(){
$fp = fopen('filename', 'rb');
while(! feof($fp)) {
$buf = fread($fp, 512);
//处理代码
}
}
function readTextFile(){
$fp = fopen('filename', 'r');
while($buf = fgets($fp)) {
//处理代码
}
}
 
posted @ 2018-03-30 08:34  Good$Luck  阅读(195)  评论(0)    收藏  举报