php使用函数--举例
来源:互联网 发布:看电视频道软件 编辑:程序博客网 时间:2024/05/26 12:04
1. 创建多级目录
1.使用递归的思想
function mkdirs_2($path){ if(!is_dir($path)){ mkdirs_2(dirname($path)); if(!mkdir($path, 0777)){ return false; } } return true;}$path2 = 'sdfs/sds/sds/s/s/sss';var_dump(mkdirs_2($path2)); //true;
1.思想主要是利用了递归, 先创建dir, 在创建dir/css ,在创建….
2.递归就是入栈的过程, 所以先让,dir/css/js/php/ok 先入栈, 则它会最后出栈…其它的就不说了.
3.dirname(path)返回的是 path中除了最后一个目录的值, 即第一次返回是: dir/css/js/php,,,第二次返回 dir/css/js,,,最后一次是 ./
2.直接利用mkdir()创建, 第三个参数必须是true才能自动创建多级目录
function mkdirs_1($path, $mode = 0777){ if(is_dir($path)){ return '无法创建,已经是目录了'; }else{ if(mkdir($path, $mode, true)) { return '创建成功'; }else{ return '创建失败'; } }}$path1 = 'a/b/c/d/e';var_dump(mkdirs_1($path1)); //string '创建成功' (length=12)
2. 删除目录下的所有文件和目录
<?php/** * 递归实现删除目录下的所有的文件和文件夹 * @param $dir 要删除的目录 * @param bool $deleteRootToo 是否删除根目录 默认不删除 */function unlinkRecursive($dir, $deleteRootToo = false){ if(!$dh = @opendir($dir)) { return; } while (false !== ($obj = readdir($dh))) { if($obj == '.' || $obj == '..') { continue; } if (!@unlink($dir . '/' . $obj))//删除文件, 如果是目录则返回false { unlinkRecursive($dir.'/'.$obj, true); } } closedir($dh); if ($deleteRootToo) { @rmdir($dir);//删除目录 } return;}unlinkRecursive('dir');?>
unlink(): 删除文件
rmdir(): 删除目录
3.遍历目录下的所有的文件
<?php//遍历目录下的所有的文件 -- 递归调用function get_all_file1($path){ if($path != '.' && $path != '..' && is_dir($path)){ //判断是否是目录,并且不是. 和.. $files = []; //存储文件信息 if($handle = opendir($path)){ //打开 while($file = readdir($handle)){ //读取 if($file != '.' && $file != '..'){ $file_name = ($path . DIRECTORY_SEPARATOR . $file); if(is_dir($file_name)){ //判断是否是目录 $files[$file] = get_all_file1($file_name); //递归 }else{ $files[] = $file_name; } } } } } closedir($handle); //关闭句柄 return $files;}var_dump(get_all_file1('F:\Apache\www\temp\php_demo'));?>
4.计算两个文件的相对路径
<?php//计算出两个文件的相对路径即path2相对于$path1的相对路径function get_relative_path($path1,$path2){ $arr1 = explode(DIRECTORY_SEPARATOR,dirname($path1)); $arr2 = explode(DIRECTORY_SEPARATOR,dirname($path2)); $length = count($arr2); for($i = 0; $i < $length; $i++){ if($arr1[$i] != $arr2[$i]){ //进行路径匹配 break; } } if($i == 0){ //根目录不同 return '不在同一个目录中'; }else if($i != 0 && $i < $length){ //在同一个个目录下 $separator = array_fill(0, ($length-$i), '..'); return(implode(DIRECTORY_SEPARATOR, array_merge($separator, array_slice($arr1, $i)))); }else if($i == $length){ //路径完全相同 return '.'; }}$path1 = 'F:\Apache\www\temp\php_demo\demo.md'; //参照路径path1$path2 = 'F:\Apache\www\temp\php_demo\demo.md';$path3 = 'F:\Apache\www\temp\sd\ss.d\sdsfd';$path4 = 'G:\FFOutput';var_dump(get_relative_path($path1,$path2));var_dump(get_relative_path($path1,$path3));var_dump(get_relative_path($path1,$path4));?>
5.php打印前一天的时间
<?php//php打印前一天的时间echo date("Y-m-d H:i:s", strtotime("-1 day")); //2015-08-04 07:59:19?>
6.截取中文字符串
<?php//截取中文字符串//1.使用正则 preg_split()--返回一维数组function substr_utf8_1($str, $start, $length){ return implode('', array_slice(preg_split('//us', $str, -1, PREG_SPLIT_NO_EMPTY), $start, $length));}$str = '你好中国 hello word';var_dump(substr_utf8_1($str, 1, 3)); //string(9) "好中国"//2. 使用mbstring模块var_dump(mb_substr($str, 1, 3, 'utf-8')); //string(9) "好中国"//3. 使用正则 split_match_all()--返回二维数组function substr_utf8_2($arr, $start, $length){ preg_match_all('/./us', $arr, $ar); var_dump(join('', array_slice($ar[0], $start, $length)));}substr_utf8_2($str, 1,3 ); //string(9) "好中国"?>
7.获取中文字符串的长度
<?php//获取中文字符串的长度// 1. 使用 mb_strlen()函数$str = '你好中国 hello word';var_dump(mb_strlen($str, 'utf-8')); //int(15)// 2. 使用 正则 preg_match_all() 将字符转化为二维数组, 然后统计二维数组的长度preg_match_all('/./us', $str, $ar);var_dump(count($ar[0])); //int(15)//3. 使用 preg_split() 转为一维数组, 统计数组的长度var_dump(count(preg_split('//us', $str,-1, PREG_SPLIT_NO_EMPTY))); //int(15)?>
8.翻转中文字符串
<?php//翻转中文字符串//1. 使用正则 preg_split()转化为一维数组-- 对数组翻转-- 合并function strrev_utf8_1($str){ return join('' , array_reverse(preg_split('//us', $str, -1, PREG_SPLIT_NO_EMPTY)));}$str = '你好中国 hello word';var_dump(strrev_utf8_1($str)); //string(23) "drow olleh 国中好你"//2. 使用正则 preg_match_all()转化为二维数组-- 对数组翻转-- 合并function strrev_utf8_2($str){ preg_match_all('/./us', $str, $arr); return join('', array_reverse($arr[0]));}var_dump(strrev_utf8_1($str)); //string(23) "drow olleh 国中好你"?>
9.翻转普通字符– 将www.去掉
<?php//翻转普通字符-- 将www.去掉$str = 'www.baidu.com';// 1. 使用substr()截取字符串-- 翻转var_dump(strrev(substr($str, 4))); //string(9) "moc.udiab"//2. 使用str_replace()替换字符串-- 翻转var_dump(strrev(str_replace('www.', '', $str))); //string(9) "moc.udiab"?>
10.获取当前执行脚本路径和参数
<?php//获取当前执行脚本路径和参数-- url路径是: ...../php_mianshi.php?sfs//路径 -- 1. 路径---使用魔术常量var_dump(__FILE__); //string 'F:\Apache\www\temp\php_demo\demo\php_mianshi.php' (length=48)//路径 -- 2. 使用$_server[]全局数组var_dump($_SERVER['SCRIPT_FILENAME']); //string 'F:/Apache/www/temp/php_demo/demo/php_mianshi.php' (length=48)//参数var_dump($_SERVER['QUERY_STRING']); //string 'sfs' (length=3)?>
11.标准的url中获取文件扩展名
<?php//标准的url中获取文件扩展名//1.使用basename去除文件后的所有内容, 定位. 和? 取中间 -- 适合文件目录function get_ext1($str){ $file = basename($str); //获取文件后的所有的路径(包括文件名 $pos1 = strpos($file, '.'); $pos2 = strpos($file, '?'); if($pos2 === false){ return substr($file, $pos1 + 1); }else{ return substr($file, $pos1 + 1, $pos2 - $pos1 - 1); }}//2.使用pathinfo()得到一个数组 --- extension 是basename中.之后的内容function get_ext2($str){ $file = pathinfo($str); //第二个参数为null时 则拆分成四个数组项 dirname, basename, extension, filename $extension = ($file['extension']); $pos1 = strpos($extension, '?'); if($pos1 === false){ return $extension; }else{ return substr($extension, 0, $pos1); }}//3.因为扩展名只有3位, 路径中没有?则直接从后截取3个字符function get_ext3($str){ $pos1 = strpos($str, '?'); if($pos1 === false){ return substr($str, -3, 3); }else{ return substr($str, $pos1 - 3, 3); }}//4.使用parse_url函数拆分function get_ext4($str){ $path = parse_url($str); //拆分4个数组项 scheme, host, path, query return substr($path['path'], -3, 3);}//5. 使用parse_url和pathinfo()结合function get_ext5($str){ $path = parse_url($str); $arr = pathinfo($path['path'], PATHINFO_EXTENSION); return $arr;}$str1 = 'http://www.baidu.com/index.php?sf=2&s=2';$str2 = 'D:/www/excor/admin/index.php';var_dump(get_ext1($str1)); //string 'php' (length=3)var_dump(get_ext2($str1)); //string 'php' (length=3)var_dump(get_ext3($str1)); //string 'php' (length=3)var_dump(get_ext4($str1)); //string 'php' (length=3)var_dump(get_ext5($str1)); //string 'php' (length=3)?>
12.取出指定的字符
<?php//取出指定的字符$str1 = 'http://www.baidu.com/index.php?sf=2&s=2';var_dump(substr($str1, strpos($str1, '?'), 1)); //string '?' (length=1)?>
13.下划线改成驼峰标志–命名方式
<?php//下划线改成驼峰标志//1. ucwords() 将字符串的中的所有单词转化为大写, 前提是 每个单词用空格分开function change_name_1($str){ return str_replace(' ', '', ucwords(str_replace('_',' ',$str)));}//2. 先转化为数组, 利用array_map执行回调函数ucfirst将每个数组项转化为大写,最后在组合成stringfunction change_name_2($str){ $arr = explode("_",$str); $arr = array_map('ucfirst',$arr); return implode("",$arr);}$str1 = 'wangming_is_a_good_boy';var_dump(change_name_1($str1)); //string 'WangmingIsAGoodBoy' (length=18)var_dump(change_name_2($str1)); //string 'WangmingIsAGoodBoy' (length=18)?>
14.统计字符在主字符串中出现的次数
<?php//统计字符在主字符串中出现的次数$str1 = 'http://www.baidu.com/index.php?sf=2&s=2';//1. 直接使用substr_count()函数var_dump(substr_count($str1, '.')); //int 3//2. 现在按照查找的字符串转化为数组, 然后统计数组的个数 记得要减去一var_dump(count(explode('.', $str1)) - 1); //int 3?>
15.取出邮箱中的域名—就是@后的
<?php//取出邮箱中的域名---就是@后的//1. 差分两个数组,去最后一个数组的内容function get_email_name_1($str){ $arr = explode('@', $str); return $arr[1];}//2.定位到@, 然后取出@之后的元素function get_email_name_2($str){ return substr($str, strpos($str, '@') + 1);}//3. 利用preg_split()拆分成一维数组function get_email_name_3($str){ $arr = preg_split('/@/', $str, -1, PREG_SPLIT_NO_EMPTY); return $arr[1];}//4. strstr()查找包括@之后的字符,然后在截取function get_email_name_4($str){ return substr(strstr($str, '@'), 1);}$str1 = 'sq_wming@163.com';var_dump(get_email_name_1($str1)); //string '163.com' (length=7)var_dump(get_email_name_2($str1)); //string '163.com' (length=7)var_dump(get_email_name_3($str1)); //string '163.com' (length=7)var_dump(get_email_name_4($str1)); //string '163.com' (length=7)?>
16.is_null()
<?phperror_reporting(0);//is_null() ---- 变量没有定义 --- 变量没有赋值--- 变量赋值为null----变量被unset 结果是: true, 否则是false$str1;$str2 = '';$str3 = ' ';$str4 = null;$str5 = array();$str6 = 'nihao';unset($str6);var_dump(is_null($str1)); //boolean truevar_dump(is_null($str2)); //boolean falsevar_dump(is_null($str3)); //boolean falsevar_dump(is_null($str4)); //boolean truevar_dump(is_null($str5)); //boolean falsevar_dump(is_null($str6)); //boolean truevar_dump(is_null($str7)); //boolean true?>
17.去除html标签
<?php//去除html标签 -- 使用strip_tags()$str = '<div><span>hello world !</span></div>';var_dump(strip_tags($str)); //string 'hello world !' (length=13)?>
18.判断一个日期字符是否是合法
<?phpheader('Content-type:text/html; charset=utf-8');//判断一个日期字符是否是合法的function check_date($date){ if(date('Y-m-d H:i:s',strtotime($date)) == $date){ return '日期合法'; }else{ return '日期不合法'; }}$date_str = '2015-38-02 20:45:30';var_dump(check_date($date_str)); //string '日期不合法' (length=15)?>
20.获取上个月的最后一天
<?php//获取上个月的最后一天function get_pro_month_lastday($date = ''){ if($date == ''){ $date = time(); }else{ $date = strtotime($date); } $day = date('j', $date); //得到本月的第几天 return date('Y-m-d', strtotime(- $day . "day", $date)); //strtotime()第一个参数设置为负的本本月的第几天,然后就得到上一个月的最后一天了}var_dump(get_pro_month_lastday("2015-4-4")); //string '2015-03-31' (length=10)?>
21.获取字符串的编码格式
<?php//获取字符串的编码格式-- 利用mb_detect_encoding()函数$str = 'hello world 你好啊';$encode = mb_detect_encoding($str, array("ASCII","UTF-8","GB2312","GBK")); //UTF-8$encode = mb_detect_encoding($str); //UTF-8var_dump($encode);?>
22.设置string的编码格式
<?php//设置string的编码格式-- 利用iconv()-- 通过length可以看出, utf-8下的一个中文字符相当于3个utf-8下的普通字符, gbk则是2个$str = 'hello world 你好啊';var_dump(mb_detect_encoding($str)); //查看当前字符串的编码---结果: string 'UTF-8' (length=5)var_dump(iconv('UTF-8', 'GBK', $str)); //string 'hello world ���ð�' (length=18)var_dump(iconv('GBK', 'UTF-8', iconv('UTF-8', 'GBK', $str))); //string 'hello world 你好啊' (length=21)?>
23.多进程写入一个文件–加锁
<?php//多进程写入一个文件--加锁function write_file($path, $content){ $handle = fopen($path, 'a'); //以文件追加的方式打开 if($handle){ if(flock($handle, LOCK_EX)){ //添加排他锁, 只有当前进程解除锁定,其它进程才能使用该文件 fwrite($handle, $content); //写入 fflush($handle); //刷新缓冲区 flock($handle, LOCK_UN); //解锁 fclose($handle); //关闭文件 }else{ var_dump('该文件已经锁定,目前不能访问'); } }else{ var_dump('文件无法读取,检查路径'); }}$path = 'test.md';write_file($path, '写入文件');?>
24.给定一个数组,找出数组中重复的元素
//1.使用array_count_values()函数,统计数组中每个元素出现的次数, 最后在遍历一下<?php$arr = ['a','b','c','c','b'];$len = count((array_count_values($arr)));$temp = array_count_values($arr);foreach($temp as $key=>$val){ if($temp[$key] >= 2){ var_dump($key); }}?>//2.使用array_unqiue()去除重复数组,咋利用array_diff_assoc()按键值和数值进行比较两个数组,注意:第一个数组是参照对象<?php$arr = ['a','b','c','c','b'];$temp = array_unique($arr);var_dump(array_diff_assoc($arr,$temp));?>//3.数组中弹出一个元素,比较这个元素是否还在数组中,如果在表示有重复的<?php$arr = ['a','b','c','c','b'];$temp = true;while($temp){ $temp = array_pop($arr); if(in_array($temp, $arr)){ var_dump($temp); }}?>
1 0
- php使用函数--举例
- php 函数运用举例
- PHP使用json举例
- 内置函数使用举例
- foreach函数使用举例
- chomp函数使用举例
- for函数使用举例
- PHP header()函数 常用举例
- var_export()函数的使用举例(后续添加其他的php输出函数)
- fprintf/fscanf函数使用举例
- realloc/setjmp函数使用举例
- setjmp/longjmp函数使用举例
- signal/setjmp函数使用举例
- readl(), writel() 函数使用举例
- select函数的使用举例
- 函数覆盖及其使用举例
- php获取文件权限的函数举例
- php的常用数组函数举例
- 数学之美:Hacker News的热门排名算法
- 分布式应急响应
- 来,接招!!! (八个Android项目源码)
- easy_install的安装和使用(Python基础)
- UVA550把数字的最后移到最前面求这样的数字的长度
- php使用函数--举例
- c++教程
- Oulipo
- 操作系统之内存管理
- 已经迫不及待的长智齿了
- HD1312 Red and Black【递归】
- 8月3日
- 第76讲:模式匹配下的赋值语句
- Android Api Demos登顶之路(十八)Recorder Activities