王朝235网址导航
立即发布
当前位置:首页 > PHP代码
文章资讯分类
文章资讯
  • php 以多种分隔符拆分字符串 php 以多种分隔符拆分字符串

    php 以多种分隔符拆分字符串

    方法一:先将分隔符转换成统一字符,再使用explode进行拆分 $arr=explode('#',str_replace(array(":"),'#',$string)); 方法二:使用preg_split拆分 $string="php教程#php入门:教程#字符串:多分隔符#字符串:拆分#数组"; $arr = preg_split("/(#|:)/",$string); print_r($arr); 输出结果:Array(    [0] => php教程    [1] => php入门    [2] => 教程    [3] => 字符串    [4] => 多分隔符    [5] => 字符串    [6] => 拆分    [7] => 数组)
    2022-09-26 9
  • php时间戳转换 php时间戳转换

    php时间戳转换

    php时间戳转换的方法:1、使用“date("Y-m-d H:i",$unixtime)”方法把时间戳转换日期;2、通过“strtotime(“today”)”方法把日期转换成时间戳。在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明。在线工具推荐:Unix时间戳转换工具1.php中时间转换函数 strtotime (date()) date("Y-m-d H:i",$unixtime) 2.php中获得今天零点的时间戳 要获得零点的unix时间戳,可以使用 $todaytime=strtotime(“today”) 然后再使用 date("Y-m-d H:i",$todaytime) 转换为日期。时间戳转换为日期时间戳转换函数:date("Y-m-d H:i:s",time()),"Y-m-d H:i:s"是转换后的日期格式,time()是获得当前时间的时间戳。如果是date("Y-m-d H:i:s",time()),则小时分秒一起显示;如果是date("Y-m-d ", time()),只显示年月日。例如:date("Y-m-d H:i:s",time())转换后为:2022-07-18 18:42:48date("Y-m-d",time())转换后为:2022-07-18 日期转换为时间戳 . class SaonekController extends Controller { public function index Action (){ /* 时间戳转换成日期不用说了但是日期要转成时间戳的话就要用到 strtotime() */ $time = time();// 时间戳 $nowtime = date('Y-m-d H:i:s',$time);// 生成带格式的日期 $oldtime = '2022-11-10 22:19:21'; $catime = strtotime($oldtime);// 日期转换为时间戳 $wc235 = date('Y-m-d H:i:s',$catime);// 时间戳又转回日期了 echo $wc235; } } ?> 3.php中时间戳转换为日期,并按照时间显示不同的内容,如刚刚,分钟前,小时前,今天,昨天等 /* 时间转换函数 */ function transTime($ustime) { $ytime = date("Y-m-d H:i",$ustime); $rtime = date("n月j日 H:i",$ustime); $htime = date("H:i",$ustime); $time = time() - $ustime; $todaytime = strtotime("today"); $time1 = time() - $todaytime; if($time < 60){ $str = '刚刚'; }else if($time < 60 * 60){ $min = floor($time/60); $str = $min.'分钟前'; }else if($time < $time1){ $str = '今天'.$htime; }else{ $str = $rtime; } return $str; } 其它的参考使用date将当时间戳与指定时间戳转换成系统时间(1)打印明天此时的时间戳 strtotime(”+1 day“) 当前时间: echo date(”Y-m-d H:i:s”,time()) 结果: 2022-01-22 09:40:25 指定时间: echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果: 2022-01-23 09:40:25 (2)打印昨天此时的 PHP 时间戳 strtotime(”-1 day“) 当前时间: echo date( ”Y-m-d H:i:s”,time()) 结果: 2022-01-22 09:40:25 指定时间: echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果: 2022-01-21 09:40:25 (3)打印下个星期此时的时间戳 strtotime(”+1 week“) 当前时间: echo date(”Y-m-d H:i:s”,time()) 结果: 2022-01-22 09:40:25 指定时间: echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果: 2022-01-29 09:40:25 (4)打印上个星期此时的时间戳 strtotime(”-1 week“) 当前时间: echo date(”Y-m-d H:i:s”,time()) 结果: 2022-01-22 09:40:25 指定时间: echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果: 2022-01-15 09:40:25 (5)打印指定下星期几的PHP时间戳 strtotime(”next Thursday“) 当前时间: echo date(”Y-m-d H:i:s”,time()) 结果: 2022-01-22 09:40:25 指定时间: echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 结果: 2022-01-29 00:00:00 (6)打印指定上星期几的时间戳 strtotime(”last Thursday“) 当前时间: echo date(”Y-m-d H:i:s”,time()) 结果: 2022-01-22 09:40:25 指定时间: echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 结果: 2022-01-15 00:00:00 更多PHP相关技术文章,请访问PHP代码栏目进行学习!
    2022-09-21 8
  • PHP获取访问页面HTTP状态码的实现代码 PHP获取访问页面HTTP状态码的实现代码

    PHP获取访问页面HTTP状态码的实现代码

    方法一 $header_info=get_headers('//www.wc235.com/'); echo $header_info[0]; //耗时 0.67~0.78 方法二 $ch = curl_init ( '//www.wc235.com/' ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_exec ( $ch ); $httpcode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE ); // 200 curl_close ( $ch ); echo $httpcode; //耗时 0.84~0.94 方法三给curl设置一些参数,可以加快速度,代码来自网络 $curl = curl_init(); $url='//www.wc235.com/'; curl_setopt($curl, CURLOPT_URL, $url); //设置URL curl_setopt($curl, CURLOPT_HEADER, 1); //获取Header curl_setopt($curl,CURLOPT_NOBODY,true); //Body就不要了吧,我们只是需要Head curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //数据存到成字符串吧,别给我直接输出到屏幕了 curl_exec($curl); //开始执行啦~ $httpcode=curl_getinfo($curl,CURLINFO_HTTP_CODE); //我知道HTTPSTAT码哦~ curl_close($curl); //用完记得关掉他 echo $httpcode; //耗时 0.45~0.53 代码四核心代码: /** * 获取远程URL的HTTP状态 * * @version 0.0.1 * @Author Chenjl * * @param string $url 远程URL * @param string $data ture[返回HTTP状态数组] | false[返回状态数值] * * @return mixed */ function getHeaders($url,$data=FALSE){ $_headers = get_headers($url,1); if( !$data ){return $_headers;} $curl = curl_init(); curl_setopt($curl,CURLOPT_URL,$url);//获取内容url curl_setopt($curl,CURLOPT_HEADER,1);//获取http头信息 curl_setopt($curl,CURLOPT_NOBODY,1);//不返回html的body信息 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//返回数据流,不直接输出 curl_setopt($curl,CURLOPT_TIMEOUT,30); //超时时长,单位秒 curl_exec($curl); $rtn= curl_getinfo($curl,CURLINFO_HTTP_CODE); curl_close($curl); return $rtn; } 上面的代码,逐风已将两种获取方式进行一个整合,方便不同获取HTTP状态情景的需求;返回结果: # 调用案例1:getHeaders('//www.wc235.com\/\',true); # 返回结果:200 // 直接返回HTTP状态码 # 调用案例2:getHeaders('//www.wc235.com/',false); # 返回结果: /* array(10) { [0]=> string(15) "HTTP/1.1 200 OK" ["Server"]=> string(5) "nginx" ["Date"]=> string(29) "Mon, 04 Jul 2016 06:21:35 GMT" ["Content-Type"]=> string(9) "text/html" ["Content-Length"]=> string(5) "26898" ["Last-Modified"]=> string(29) "Mon, 04 Jul 2016 06:16:00 GMT" ["Connection"]=> string(5) "close" ["Vary"]=> string(15) "Accept-Encoding" ["ETag"]=> string(15) ""5779ff20-6912"" ["Accept-Ranges"]=> string(5) "bytes" } */ 基本上就这些了,大家可以适当补充
    2022-09-16 13
  • PHP字符串分割相关函数 PHP字符串分割相关函数

    PHP字符串分割相关函数

    【1】chunk_split — 将字符串分割成小块【2】str_split — 将字符串转换为数组【3】explode— 使用一个字符串分割另一个字符串,返回新的数组【4】implode(join)— 将一个一维数组的值转化为字符串【5】strtok — 标记分割字符串【1】chunk_split — 将字符串分割成小块 作用: 使用此函数将字符串分割成小块非常有用。该函数不改变原始字符串。 函数: chunk_split ( string $body [, int $chunklen , string $end ] ) : string 参数: $body要分割的字符串 $chunklen分割尺寸默认76 $end行尾序列符号默认\r\n 返回值: 返回分割后的字符。 $str = 'Hello Tacks!'; echo $str,'<br/>'; echo chunk_split($str,12,'...'),'<br/>';#Hello Tacks!... #按照尺寸分割字符串,并且追加每个分割后 结尾字符 【2】str_split — 将字符串转换为数组 作用: 按照等尺寸将字符串转换为数组 函数: str_split ( string $string [, int $split_length = 1 ] ) : array 参数: $string 字符串 $split_length每一段的长度,默认为1 返回值: 返回字符串,其中split_length如果小于1则会返回False, 如果超过字符串长度,就按照字符串长度当成数组的一个元素。 $str = "123456789"; $arr = str_split($str);#一个字符当作数组的一个单元 var_dump($arr); $arr = str_split($str,3);#每三个字符当作数组的一个单元 var_dump($arr); $arr = str_split($str,99);#整个字符串当作数组的一个单元 var_dump($arr); $arr = str_split($str,0); var_dump($arr);#返回FALSE并警告 【3】explode— 使用一个字符串分割另一个字符串,返回新的数组 作用: 使用一个字符串分割另一个字符串。每个元素都是 string 的一个子串 它们被字符串 $delimiter 作为边界点分割出来 函数: explode ( string $delimiter , string $string [, int $limit ] ) : array 参数: $delimiter 边界上的分隔字符。 $string 输入要进行分割的字符串。 $limit 如果设置limit参数并且是正数,则返回的数组包含最多limit个元素,而且最后哪个元素将包含string的剩余部分。 如果limit参数是负数,则返回最后的-limit个元素外的所有元素。 如果limit是0,则会当作1 返回值: 此函数返回由字符串组成的 array,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。 备注: 如果 $delimiter 为空字符串(""),explode() 将返回 FALSE。 如果 $delimiter 所包含的值在 string 中找不到,并且使用了负数的 limit。 那么会返回空的 array, 否则返回包含 string 单个元素的数组。 //使用一个字符串打散成数组 $str = 'tacks1 tacks2 tacks3 tacks4 tacks5'; var_dump(explode('',$str));//boolean false //空的$delimiter 会返回False并且报错。 var_dump(explode(' ',$str));//按照空格分开每个子串成为数组。 var_dump(explode(' ',$str,3));//数组元素为3个,前连两个按照指定的字符分割,剩下的全部挡在组后一个数组元素 var_dump(explode(' ',$str,-1));//在分割后的数组,删除最后一个元素tacks5 var_dump(explode('AAA',$str,0));//如果字符串中没有$delimiter,那么会全部当成数组的一个单元 /* boolean false array (size=5) 0 => string 'tacks1' (length=6) 1 => string 'tacks2' (length=6) 2 => string 'tacks3' (length=6) 3 => string 'tacks4' (length=6) 4 => string 'tacks5' (length=6) array (size=3) 0 => string 'tacks1' (length=6) 1 => string 'tacks2' (length=6) 2 => string 'tacks3 tacks4 tacks5' (length=20) array (size=4) 0 => string 'tacks1' (length=6) 1 => string 'tacks2' (length=6) 2 => string 'tacks3' (length=6) 3 => string 'tacks4' (length=6) array (size=1) 0 => string 'tacks1 tacks2 tacks3 tacks4 tacks5' (length=34) */ 【4】implode(join)— 将一个一维数组的值转化为字符串与上面explode()函数正好相反。 作用: 将一个一维数组的值按照特定的字符串$glue转化为字符串。 函数: implode ( string $glue , array $pieces ) : string join ( string $glue , array $pieces ) : string(join是implode的别名) implode ( array $pieces ) : string (最好不用) 参数: $glue 默认为空的字符串作为粘合数组每个元素 $pieces你想要转化的数组 返回值: 返回一个字符串,其内容为由 glue 分割开的数组的值。 备注: 因为历史原因,implode() 可以接收两种参数顺序,也就是第一个参数$glue也可以不写。 但是最好还是些两个参数向后兼容。而且第二个参数必须是一维数组。 $arr = ['tacks1','tacks2','tacks3','tacks4','tacks5']; echo implode(',',$arr),'<br/>';//tacks1,tacks2,tacks3,tacks4,tacks5 echo implode($arr),'<br/>';//tacks1tacks2tacks3tacks4tacks5 echo join('-',$arr),'<br/>';//tacks1-tacks2-tacks3-tacks4-tacks5 【5】strtok — 标记分割字符串 作用: strtok() 将字符串 str 分割为若干子字符串,每个子字符串以 token 中的字符分割。 函数: strtok ( string $str , string $token ) : string strtok ( string $token ) : string 参数: $str 被分成若干子字符串的原始字符串。 $token 分界字符,可以使用多个字符,字符串将被该参数中任何一个字符分割。 返回值: 标记后的字符串。 备注: 仅第一次调用 strtok 函数时使用 string 参数。 后来每次调用 strtok,都将只使用 token 参数,因为它会记住它在字符串 string 中的位置。 如果要重新开始分割一个新的字符串,你需要再次使用 string 来调用 strtok 函数,以便完成初始化工作。 $string = "TACKS Tacks tacks"; $tok = strtok($string, " ");#使用空格来分割字符串 echo $tok,'<br/>';//第一个字串 $tok = strtok(" ");//-------向后移动 echo $tok,'<br/>';//第二个字串 $tok = strtok(" ");//-------向后移动 echo $tok,'<br/>';//第三个字串 //当然我们可以用循环来解决 $tok = strtok($string, " ");#使用空格来分割字符串 while($tok != false){#使用循环来解决 echo 'str=',$tok,'<br/>'; $tok = strtok(" ");//移动下一个分割位置 } 【小结】chunk_split($body,$chunklen,$end)按照长度$chunklen分割字符串$body,然后再每个子串后面加上指定$end结束字符,然后返回整个字符串。str_split($string,$split_length)把$string字符串按照$split_length长度分割成子串组成数组。explode($delimiter,$string,$limit)把$string字符串按照$delimiter分界点分割成子串然后组成指定$limit元素个数的数组。implode($glue,$pieces)把$pieces一维数组按照特定的$glue连接符连接每两个字符,最后合并成一个字符串。strtok($str,$token)把$str字符串按照$token分界符,进行依次分割成每个字符串。
    2022-09-15 3
  • php压缩gif和png图透明背景变成黑色的解决方法 php压缩gif和png图透明背景变成黑色的解决方法

    php压缩gif和png图透明背景变成黑色的解决方法

    工作中需要缩放一些gif图然后在去Imagecopymerge,可是发现使用了imagecreatetruecolor和imagecopyresampled后发现背景图不对,本来透明的背景图变成了黑色,后来发现做一些修改才可以: $img = imagecreatetruecolor(200, 200); //2.上色 $color=imagecolorallocate($img,255,255,255); //3.设置透明 imagecolortransparent($img,$color); imagefill($img,0,0,$color);
    2022-09-13 7
  • tp5常用方法-一维/二维数组根据关键字对数组字段进行相似度排序 tp5常用方法-一维/二维数组根据关键字对数组字段进行相似度排序

    tp5常用方法-一维/二维数组根据关键字对数组字段进行相似度排序

    /** * 一维/二维数组根据关键字对数组字段进行相似度排序 * @param array $array 原数组 * @param string $keyword 关键字 * @param string $field 要匹配的数组字段名,不传则表示一维数组 * @param int $limit 限制次数,-1不限制 * @return array 排序好的数组 */ function similarArrSort(array $array, string $keyword, $field = '', $limit = -1) { //数组key小于3,直接返回,不符合排序要求(特例,可不写) if (count($array) <= 3 || ($limit != -1 && $limit <= 3)) { return $array; } $newField = $field; //赋值 //如果传入的field为空则表示一维数组,生成field为label的二维数组 if ($field == '') { $label2 = []; foreach ($array as $k => $value) $label2[$k]['label'] = $value; $array = $label2; $newField = 'label'; } //数组相似度处理 foreach ($array as $key => $value) { similar_text($value[$newField], $keyword, $percent); $value['percent'] = $percent; $data[] = $value; } //取出数组中percent的一列,返回一维数组 $percent = array_column($data, 'percent'); //排序,根据 percent 排序 array_multisort($percent, SORT_DESC, $data); //一维数组处理返回一维数组 if ($field == '') { $newData = []; foreach ($data as $k => $v) $newData[$k] = $v[$newField]; $data = $newData; } //限制返回数量 if ($limit != -1) { $data = array_slice($data, 0, $limit); } return $data; }
    2022-09-09 9
  • tp5常用方法-二维数组根据键值排序 tp5常用方法-二维数组根据键值排序

    tp5常用方法-二维数组根据键值排序

    /** * 二维数组根据键值排序 * @param array $array 要排序的数组 * @param string $keys 要用来排序的键名 * @param string $type 默认为降序排序 * @return array */ function arraySort($array, $keys, $type = 'desc') { //将排序的键名作为键值 $keysValue = $newArray = []; foreach ($array as $k => $v) $keysValue[$k] = $v[$keys]; ($type == 'asc' || $type == 'ASC') ? asort($keysValue) : arsort($keysValue); reset($keysValue); //重置指针 foreach ($keysValue as $k => $v) $newArray[$k] = $array[$k]; return array_values($newArray); //重置键值 }
    2022-09-09 4
  • php多种方法判断是否为手机、微信访问的函数,很准确 php多种方法判断是否为手机、微信访问的函数,很准确

    php多种方法判断是否为手机、微信访问的函数,很准确

    php多种方法判断是否为手机访问以及微信端访问,100%准确,可以收藏下 function ismobile(){ // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])){ return true; } // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 if (isset ($_SERVER['HTTP_VIA'])){ // 找不到为flase,否则为true return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false; } // 脑残法,判断手机发送的客户端标志,兼容性有待提高 if (isset ($_SERVER['HTTP_USER_AGENT'])){ $clientkeywords = array ('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'); // 从HTTP_USER_AGENT中查找手机浏览器的关键字 if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))){ return true; } } // 协议法,因为有可能不准确,放到最后判断 if (isset ($_SERVER['HTTP_ACCEPT'])){ // 如果只支持wml并且不支持html那一定是移动设备 // 如果支持wml和html但是wml在html之前则是移动设备 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))){ return true; } } return false; } //php判断是否为微信: function isWeixin() { if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) { return true; } else { return false; } } 使用方法如下: <? if(ismobile()){ ?> 是手机浏览! <? }else{ ?> 不是手机浏览! <? } ?> <? if(isWeixin()){ ?> 是微信浏览器! <? }else{ ?> 不是微信浏览器! <? } ?>
    2022-07-01 29
  • 详解PHP接口访问频率限制 详解PHP接口访问频率限制

    详解PHP接口访问频率限制

    /** * 检测用户接口访问频率 */ function api_frequency_visits ($uid) { $key = "user:{$uid}:api:frequency"; $redis = new Redis(); $redis->connect('127.0.0.1'); $data = $redis->hGetAll($key); //需要删除的key $del_key = []; //时间内访问的总次数 $total = 0; //时间内最大访问次数 $max_frequency = 10; //当前时间 $now_time = time(); //限制时间 $limit_time = 60; foreach ($data as $time=>$count) { if ($time < $now_time - $limit_time) { $del_key[] = $time; } else { $total += $count; } } //存在需要删除的key if ($del_key) { $redis->hDel($key, ...$del_key); } if ($total >= $max_frequency) { return false; } return $redis->hIncrBy($key, $now_time, 1); } $uid = 1; $result = api_frequency_visits($uid); if (!$result) { echo json_encode(['code'=>0, 'msg'=>'操作过于频繁', 'data'=>[]]);die; } echo json_encode(['code'=>1, 'msg'=>'', 'data'=>[ 'uid'=>$uid, 'other'=>rand() ]]);die; 限制时间,限制次数这些都可以修改,包括根据用户id也可以换成自己想要的限制,比如IP等。
    2022-07-01 29
  • PHP简单检测网址是否能够正常打开的方法 PHP简单检测网址是否能够正常打开的方法

    PHP简单检测网址是否能够正常打开的方法

    <?php function httpcode($url){ $ch = curl_init(); $timeout = 3; curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch,CURLOPT_URL,$url); curl_exec($ch); return $httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE); curl_close($ch); } echo "判断链接:".httpcode('https://www.zhansanjie.com'); ?> 如果显示为200则正常,如果显示其它值表示不正常;$timeout后面的3是设置超时秒数。
    2022-07-01 37