PHP实用方法(常更新)

此篇更新一些工作中常用的方法,每周会更新整理。

1.获取用户ip

 function get_client_ip($type = 0) {
	    $type       =  $type ? 1 : 0;
	    $ip         =   'unknown';
	    if ($ip !== 'unknown') return $ip[$type];
	    if($_SERVER['HTTP_X_REAL_IP']){//nginx 代理模式下,获取客户端真实IP
	        $ip=$_SERVER['HTTP_X_REAL_IP'];
	    }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {//客户端的ip
	        $ip     =   $_SERVER['HTTP_CLIENT_IP'];
	    }elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {//浏览当前页面的用户计算机的网关
	        $arr    =   explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
	        $pos    =   array_search('unknown',$arr);
	        if(false !== $pos) unset($arr[$pos]);
	        $ip     =   trim($arr[0]);
	    }elseif (isset($_SERVER['REMOTE_ADDR'])) {
	        $ip     =   $_SERVER['REMOTE_ADDR'];//浏览当前页面的用户计算机的ip地址
	    }else{
	        $ip=$_SERVER['REMOTE_ADDR'];
	    }
	    // IP地址合法验证
	    $long = sprintf("%u",ip2long($ip));
	    $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);
	    return $ip[$type];
	}

附:tp5自带函数获取ip

// 获取外网ip 
$ip=Request::instance()->ip();

2.判断是否为手机用户

function is_mobile(){
 
        $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
 
        $regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";
 
        $regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";
 
        $regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
 
        $regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";
 
        $regex_match.=")/i";
 
        // preg_match()方法功能为匹配字符,既第二个参数所含字符是否包含第一个参数所含字符,包含则返回1既true
        return preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));
    }

3.判断是微信浏览器还是外部浏览器

 $ua = $_SERVER['HTTP_USER_AGENT'];
if (strpos($ua, 'MicroMessenger') == false && strpos($ua, 'Windows Phone') == false) {
		// echo '普通浏览器打开';
} else {
		// echo '微信打开';	
}

4.以json方式 请求接口

public function postcurl($request_url,$predata_total){
        // 启动一个CURL会话
        $curl = curl_init(); 
		// 设置抓取的url
		curl_setopt($curl, CURLOPT_URL, $request_url);
		// 设置头文件的信息作为数据流输出
		curl_setopt($curl, CURLOPT_HEADER, 0);
		// 设置获取的信息以文件流的形式返回,而不是直接输出。
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		// 超时设置
		curl_setopt($curl, CURLOPT_TIMEOUT, 10);
		// 设置请求头
		curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
		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, $predata_total);
        // 执行操作
        $res = curl_exec($curl);
        if (curl_errno($curl)) {
            echo 'Errno'.curl_error($curl); // 捕抓异常
        }
        // 关闭CURL会话
        curl_close($curl);
		return $res;
    }

5.array转xml

private function arrtoxml( $arr ){ 
		if(!$arr){ 
		return ''; 
		}else{ 
			$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; 
		} 
	}

6.xml转array

private function xml_to_array($xml){
        if(!$xml){
            return false;
        }
        //将XML转为array
        //禁止引用外部xml实体
        libxml_disable_entity_loader(true);
        $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
        return $data;
    }

7.随机32位字符串

private function nonce_str(){
        $result = '';
        $str = 'QWERTYUIOPASDFGHJKLZXVBNMqwertyuioplkjhgfdsamnbvcxz';
        for ($i=0;$i<31;$i++){
            $result .= $str[rand(0,48)];
        }
        return $result;
    }

8.将数组写入文件中

$path='./result.txt';//将生成的文件保存到b.txt
$fps = fopen($path,'w+');
fwrite($fps,var_export($result,true));//$result 是要保存的数组

9.数组转json 保留中文

json_encode($returnData,JSON_UNESCAPED_UNICODE);

10.不显示按钮 只保留占位作用

<a style="visibility:hidden;" class="layui-btn layui-btn-xs" lay-event="uploaderp">占位</a>

11.转换时间格式

 public static function convertToDateTime($timeString) {
        $formats = [
            'Y-m-d H:i:s',         // 格式1: 2024-06-04 00:02:12
            'Y年n月j日G:i:s',      // 格式2: 2024年7月22日13:02:15
            'Y.m.d H:i',           // 格式3: 2024.07.02 16:54
        ];
    
        foreach ($formats as $format) {
            $dateTime = \DateTime::createFromFormat($format, $timeString);
            if ($dateTime && $dateTime->format($format) == $timeString) {
                return $dateTime->format('Y-m-d H:i:s'); // 统一格式为 Y-m-d H:i:s
            }
        }
    
        return false; // 无法匹配任何格式
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值