您的位置:首页 > 编程语言 > PHP开发

php自定义函数--其他

2017-11-04 20:19 417 查看
乱码解决:
header('content-type:text/html;charset=utf-8');

* 二维码下载
* @param $provider 要下载的文件名
* @param Request $request
*/
function download($provider)
{
// 下载二维码
$contenttype = 'image/jpeg';
$dir_path = QRCODE; //图片所在路径
$fileName = $provider; //要下载的文件名
$fileurl = $dir_path.$fileName; //从哪个路径下载

header("Cache-control: private");
header("Content-type: $contenttype"); //设置要下载的文件类型
//header("Content-Length:" . filesize($fileurl)); //设置要下载文件的文件大小
header("Content-Disposition: attachment; filename=" . urldecode($fileName)); //设置要下载文件的文件名

readfile($fileurl);

}/**
* 导出 CSV get方式,直接下载
* @access public
* @param array $nameArr 要 array('导出的表中的字段名'=>'中文命名','导出的表中的字段名'=>'中文命名') 一维数组,表头
* @return array $sqlArr 数据库查出的数据。二维数组
* @return string $name 导出CSV 时的命名
*
* 调用示例
$arr = ['name'=>'姓名','age'=>'年龄'];
$res = [['name'=>'西瓜','age'=>25],['name'=>'杨熙','age'=>26]];
var_dump($arr);
csv($arr,$res,'西瓜');
*/
function csv($nameArr = "", $sqlArr = "", $name = "")
{
foreach ($nameArr as $key => $value) {
iconv('utf-8', 'gbk', $value); //转为中文
$str[] = $value;
}
$str = implode(',', $str);
$str .= "\n"; //用引文逗号分开
foreach ($sqlArr as $key => $value) {
$array = array_change_key_case($value, CASE_LOWER); //返回字符串键名全为小写或大写的数组
$chanJi = array_diff_key($array, $nameArr); //使用键名比较计算数组的差集
$jiaoji[] = array_diff_key($array, $chanJi);
}

$jiaoji = array_values($jiaoji); //只取值
foreach ($jiaoji as $key => $value) {
$arrValues[] = implode(',', $value);
}
$string = implode("\n", $arrValues);
$str .= $string;
// var_dump($str);exit;
$str = iconv('utf-8', 'gbk//TRANSLIT', $str); //转为中文
/*去除特殊符号*/
$regex = "/\/|\~|\!|\|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\<|\>|\?|\[|\]|\|\.|\/|\;|\'|\=|\\\|\|/";
$str = preg_replace($regex, "", $str);
$filename = "$name" . date('YmdHis') . '.csv'; //设置文件名
$data = $str;
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=" . $filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo $data;exit;
}/**
* 自带下载功能,导出csv格式
* @param $taheader 表格头部,传个一维数组
* @param $data 表格数据,传个二维数组
* @return string
*/
function createCSV($taheader,$data){
$tableheader = $taheader;
$tablelength = count($tableheader);
/*输入到CSV文件 解决乱码问题*/
$html = "\xEF\xBB\xBF";

/*输出表头*/
foreach ($tableheader as $value) {
$html .= $value . "\t ,";
}
$html .= "\n";

/*遍历二维数组,输出内容*/
foreach ($data as $value) {
for ($i = 0; $i < $tablelength; $i++) {
$html .= $value[$i] . "\t ,";
}
$html .= "\n";
}

/*输出CSV文件*/
header("Content-type:text/csv");
header("Content-Disposition:attachment; filename=全部数据.csv");
return $html;
}
/**
* 自带下载功能,导出TXT格式
* @param $finame  文件名。数据类型为字符串
* @param $content 文件要写入的内容。数据类型为字符串
* @param string $postfix 要生成什么格式。只有2种.txt和.doc可选。如果是.doc可以生成,里面没有图片和链接的word格式
*/
function createTxt($finame,$content,$postfix='.txt'){
//第一步:处理中文文件名
$ua = $_SERVER["HTTP_USER_AGENT"];      //用的是什么浏览器
$filename = $finame.$postfix;             //一定要记得拼.txt。不然程序不知道下载什么格式
$encoded_filename = urlencode($filename);      //url编码
$encoded_filename = str_replace("+", "%20", $encoded_filename); //把 + 替换成 %20

//第二步:生成TXT文件
header("Content-Type: application/octet-stream");
if (preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT']) ) {
header('Content-Disposition:  attachment; filename="' . $encoded_filename . '"');
} elseif (preg_match("/Firefox/", $_SERVER['HTTP_USER_AGENT'])) {
header('Content-Disposition: attachment; filename*="utf8' .  $filename . '"');
} else {
header('Content-Disposition: attachment; filename="' .  $filename . '"');
}
echo $content;     //拼接数据并以echo 返回
}
/* 打印数组或字符串
* @param string $value 要打印的变量
* @param int $now 为1是去掉exit的功能
*/
function o($value='',$now=0){
if($now==0) {
echo '<pre>';
print_r($value);
echo '</pre>';
exit;
} elseif($now==1) {
echo '<pre>';
print_r($value);
echo '</pre>';
}

/*
* 把ip地址转换成整数
* 效果同ip2long此函数
*/
function ipToInt($ip){
$iparr = explode('.',$ip);
$num = 0;
for($i=0;$i<count($iparr);$i++){
$num += intval($iparr[$i]) * pow(256,count($iparr)-($i+1));
}
return $num;
}效果截图:



//若IP格式不对,则返回false。否则返回true
function filter_ip($ip){
if (!filter_var($ip, FILTER_VALIDATE_IP))
return false;
return true;
}
/**
*  检测域名
*/
function checkDomain2($domain){
if(preg_match('/^(http:\/\/|https:\/\/)+([0-9a-zA-Z\.\-\_]{1,32})+(\.[a-zA-Z]{2,5})$/', $domain) ||
preg_match('/^(http:\/\/|https:\/\/)+((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $domain) ||
preg_match('/^(http:\/\/|https:\/\/)+([0-9a-zA-Z\.\-\_]{1,32})+(\.[a-zA-Z]{2,5}):\d{0,5}$/', $domain) ||
preg_match('/^(http:\/\/|https:\/\/)+((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d)))):\d{0,5}$/', $domain) ||
preg_match('/^(http:\/\/|https:\/\/)+(.*)$/', $domain)
)
{
return true;
}else{
return false;
}
}

/**
*  检测IP
*/
function checkIp($ip){
//ipv6
$preg = "/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/";

$preg2 = "/^(\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\
4000
d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*)-(\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*)$/";

if(preg_match('/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $ip) || preg_match('/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))-((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $ip) || preg_match($preg,$ip) || preg_match($preg2,$ip))
{
return true;
}else{
return false;
}
}
/**
* 作用:将xml转为array
* @param $xml
* @return mixed
*/
function xmlToArray($xml)
{
//将XML转为array
$array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $array_data;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息