php常用方法整理
PHP正则替换HTML代码中的所有图片链接地址
/**
* PHP正则替换HTML代码中的所有图片链接地址
* description htmlspecialchars() 后的字符串
* http_path 添加的图片路径
* */
function handleDescriptionHtml($description,$http_path)
{
$description = htmlspecialchars_decode($description);
$pregRule = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
$description = preg_replace($pregRule, '<img src="'.$http_path. '${1}" />', $description);
return $description;
}
PHP正则替换mackdown代码中的所有图片链接地址
/**
* PHP正则替换markdown代码中的所有图片链接地址
* http_path 添加的图片路径
* */
function handleDescriptionMackdown($description,$http_path)
{
$pregRule = '/!\\[.*\\]\\((.+)\\)/';
$description = preg_replace($pregRule, '', $description);
return $description;
}
获取域名
/**
* 获取域名
* */
function protocol()
{
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
return $protocol.$_SERVER[HTTP_HOST];
}
转换字符编码为utf-8
/**
* 转换字符编码为utf-8
*/
function strToUtf8($str){
$encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));
if($encode == 'UTF-8'){
return $str;
}else{
return mb_convert_encoding($str, 'UTF-8', $encode);
}
}
二维数组排序
/**
* 二维数组排序
* array 数组数据
* keys 键
* sort 排序 asc:正序 desc:倒序
*/
//方法一
function arraySort($array, $keys, $sort = 'asc') {
if ($sort == 'asc') {
$sort = SORT_ASC;
} else {
$sort = SORT_DESC;
}
$keysValue = [];
foreach ($array as $k => $v) {
$keysValue[$k] = $v[$keys];
}
array_multisort($keysValue, $sort, $array);
return $array;
}
//方法二
function arraySort($array,$keys,$sort='asc') {
$newArr = $valArr = array();
foreach ($array as $key=>$value) {
$valArr[$key] = $value[$keys];
}
($sort == 'asc') ? asort($valArr) : arsort($valArr);
reset($valArr);
foreach($valArr as $key=>$value) {
$newArr[$key] = $array[$key];
}
return $newArr;
}
curl_get
/**
* curl_get
* url 请求地址
*/
function curl_get($url){
$header = array(
'Accept: application/json',
);
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url);
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 0);
// 超时设置,以秒为单位
curl_setopt($curl, CURLOPT_TIMEOUT, 1);
// 超时设置,以毫秒为单位
// curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
// 设置请求头
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
//执行命令
$data = curl_exec($curl);
if (curl_error($curl)) {
return false;
} else {
// 打印返回的内容
curl_close($curl);
return $data;
}
}
curl_post
/**
* curl_post
* url 请求地址
* postdata 传输的数据,数组格式
*/
function curl_post( $url, $postdata ) {
$header = array(
'Accept: application/json',
);
//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url);
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 0);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 超时设置
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
// 超时设置,以毫秒为单位
// curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
// 设置请求头
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE );
//设置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
//执行命令
$data = curl_exec($curl);
if (curl_error($curl)) {
return false;
} else {
// 打印返回的内容
curl_close($curl);
return $data;
}
}
获取两个时间相差几天
/**
* 获取两个时间相差几天
* time1 结束时间
* time2 开始时间
*/
function getTimeDifferDay($time1,$time2)
{
return floor((strtotime($time1) - strtotime($time2))/86400);
}
获取两个时间相差几小时
/**
* 获取两个时间相差几小时
* time1 结束时间
* time2 开始时间
*/
function getTimeDifferHour($time1,$time2)
{
$day = getTimeDifferDay($time1,$time2);
$data = ceil((strtotime($time1) - strtotime($time2)) % 86400 / 3600);
if ($day > 0) {
$data += $day*24;
}
return $data;
}
获取两个时间相差几分钟
/**
* 获取两个时间相差几分钟
* time1 结束时间
* time2 开始时间
*/
function getTimeDifferMinute($time1,$time2)
{
$day = getTimeDifferDay($time1,$time2);
$data = ceil((strtotime($time1) - strtotime($time2)) % 86400 / 60);
if ($day > 0) {
$data += $day*24*60;
}
return $data;
}
获取两个时间相差几秒
/**
* 获取两个时间相差几秒
* time1 结束时间
* time2 开始时间
*/
function getTimeDifferSecond($time1,$time2)
{
return strtotime($time1) - strtotime($time2);
}
获取随机字符串
/**
* 获取随机字符串
* length 字符串长度
* isAll 是否字母数字
*/
function getRand( $length = 6,$isAll = false)
{
if ($isAll) {
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
} else {
$chars = '0123456789';
}
$randStr = '';
for ( $i = 0; $i < $length; $i++ )
{
$randStr .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
return $randStr;
}
身份证校验
//身份证校验
function isCreditNo($vStr){
$vCity = array(
'11','12','13','14','15','21','22',
'23','31','32','33','34','35','36',
'37','41','42','43','44','45','46',
'50','51','52','53','54','61','62',
'63','64','65','71','81','82','91'
);
if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $vStr)) return 0;
if (!in_array(substr($vStr, 0, 2), $vCity)) return 0;
$vStr = preg_replace('/[xX]$/i', 'a', $vStr);
$vLength = strlen($vStr);
if ($vLength == 18) {
$vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
} else {
$vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
}
if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return 0;
if ($vLength == 18) {
$vSum = 0;
for ($i = 17 ; $i >= 0 ; $i--) {
$vSubStr = substr($vStr, 17 - $i, 1);
$vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));
}
if($vSum % 11 != 1) return 0;
}
return 1;
}
Base64图片转换为本地图片并保存
/**
* [Base64图片转换为本地图片并保存]
* @param [Base64] $base64_image_content [要保存的Base64]
* @param [目录] $path [要保存的路径]
*/
function base64_image_content($base64_image_content,$path){
//匹配出图片的格式
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
$type = $result[2];
$src = date('Ymd',time())."/";
$new_file = $path."/".$src;
if(!file_exists($new_file)){
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir($new_file, 0700);
}
$img = md5(time().rand()).".{$type}";
$new_file = $new_file.$img;
if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
return $src.$img;
}else{
return 0;
}
}else{
return 0;
}
}
大数值计算防止使用科学计数法
// calc(参数1参数2,参数3);
// 参数3指定运算方法:add加,sub减,mul乘,div除,pow幂,mod取模,sqrt求算术平方根
// 加减乖除:参数1 加上/减去/乘以/除以 参数2
// 幂:参数1 的 参数2 次方.
// 模:参数1 除以 参数2 得到的余数.
// 算术平方根:求 参数1 的算术平方根.参数2不起作用,但不能省略.
// echo calc('111111111111111111111111111111111111111111111111111111111111111111111111111110','2','mul');
function calc($m,$n,$x)
{
$errors=array(
'被除数不能为零',
'负数没有平方根'
);
switch($x){
case 'add':
$t=bcadd($m,$n,2);
break;
case 'sub':
$t=bcsub($m,$n,2);
break;
case 'mul':
$t=bcmul($m,$n,2);
break;
case 'div':
if($n!=0){
$t=bcdiv($m,$n,2);
}else{
return $errors[0];
}
break;
case 'pow':
$t=bcpow($m,$n,2);
break;
case 'mod':
if($n!=0){
$t=bcmod($m,$n,2);
}else{
return $errors[0];
}
break;
case 'sqrt':
if($m>=0){
$t=bcsqrt($m,2);
}else{
return $errors[1];
}
break;
}
// $t=preg_replace("/\..*0+$/",'',$t);
return $t;
}
版权声明:本文为wyygmy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。