PHP小例子
这是最近看的面试题总结的小例子,没事的时候可以看看
<?php /** * Created by PhpStorm. * User: qishou * Date: 15-8-1 * Time: 下午8:39 */ header("content-type:text/html;charset=utf-8"); //截取中文字符 $str = "中国你好,hello world !"; function substr_utf8($str,$start,$length){ return implode("",array_slice(preg_split("//u",$str,-1,PREG_SPLIT_NO_EMPTY),$start,$length)); } var_dump(substr_utf8($str,0,10)); //在中文字符串中查找指定的值并获取中文字字符串的长度 $str = "中国2北334京"; echo mb_strlen($str,"utf-8")."<br/>";//返回振文字符串的长度 echo mb_substr($str,3,1,"utf-8")."<br/>";//截取指定中文字符串 //反转中文字符 $str = "中国你好,hello world !"; function strrev_utf8($str){ return implode("",array_reverse(preg_split("//u",$str,-1,PREG_SPLIT_NO_EMPTY))); } echo strrev_utf8($str)."<br/>"; //反转普通字符 $str = "www.baidu.com"; echo strrev(str_replace("www.","",$str))."<br/>"; echo strrev(substr($str,4))."<br/>"; //获取当卡脚本执行路径 echo __FILE__."<br/>";//脚本路径 var_dump($_SERVER[SCRIPT_FILENAME]);//脚本路径 var_dump($_SERVER[REQUEST_URI]);//请求参数 var_dump($_SERVER[QUERY_STRING]);//请求参数 //获取文件扩展名 $path = "D:/www/excor/admin/index.php"; function ext1($path){ return pathinfo($path,PATHINFO_EXTENSION); } function ext2($path){ return substr($path,-3,3); } function ext3($path){ return substr($path,strpos($path,".")+1); } function ext4($path){ $path = explode(".",$path); return $path[count($path)-1]; } function ext5($path){ $path = pathinfo($path); return $path["extension"]; } function ext6($path){ // return strstr($path,".",true); return strchr($path,"."); } echo ext1($path)."<br/>"; echo ext2($path)."<br/>"; echo ext3($path)."<br/>"; echo ext4($path)."<br/>"; echo ext5($path)."<br/>"; echo ext6($path)."<br/>"; //取出指定字符 $text = "content-type:text/html"; echo substr($text,strpos($text,":")+1)."<br/>"; //改变变量的命名方式open_door => OpenDoor 可用函数:ucfisrt(),lcfirst(),strtolower(),strupper,ucwords() $name = "make_by_id"; function change_name($name){ // //方式1 // $arr = explode("_",$name); // $arr = array_map("ucfirst",$arr); // return implode("",$arr); //方式2 $arr = explode("_",$name);//拆分数组 $arr = implode(" ",$arr);//组合数组 return str_replace(" ","",ucwords($arr)); } echo change_name($name)."<br/>"; //计算字符串中某个字符出现的次数 $str = "Hello world !"; echo substr_count($str,"l")."<br/>"; //取出邮箱中的域名qishouzhang@163.com $str = "qishouzhang@163.com"; echo substr($str,strpos($str,"@")+1)."<br/>"; echo substr(strstr($str,"@"),1)."<br/>"; echo explode("@",$str)[1]."<br/>"; //is_null判断结果 $x = ""; echo is_null($x)."<br/>";//返回false(以下情况is_null()返回真:被赋值为null;尚未被赋值;被unset()) //PHP单例模式连接数据库 class Mysql{ private static $instance = null;//静态成员属性 private function __construct(){}//私有的构造方法 public static function getInstance(){//以自己实例为返回值的静态的公有的方法 if(self::$instance == null){ self::$instance = new Mysql(); } return self::$instance; } private function __clone(){}//禁止clone } $obj1 = Mysql::getInstance(); $obj2 = Mysql::getInstance(); if($obj1 === $obj2){ echo "同一个实例<br/>"; }else{ echo "不同的实例<br/>"; } //测试抽象类是否能被实例化 abstract class A{ public function __construct(){ echo "对象已创建!<br/>"; } } class B extends A{ public function __construct(){ echo "子类对象已创建!<br/>"; } } //$obj1 = new A(); //抽象类不能被实例化 $obj2 = new B(); //PHP遍历指定目录下的文件 $path = "D:/"; $dir_handel = opendir($path);//打开目录文件,返回该目录的句柄,是一个资源文件 while($file = readdir($dir_handel)){ $dirFile = $path.DIRECTORY_SEPARATOR.$file;//将目录下的文件和当前目录连接起来 // echo $file."----".filetype($dirFile)."<br/>";//输出文件信息 } //获取指定页面的内容 $url = "http://zhangqishou.com"; //方法一 $handle = fopen($url,"rb"); $content = stream_get_contents($handle); fclose($handle); echo "<pre>"; //print_r($content); //方法二 $content = file_get_contents($url); echo "<pre>"; //print_r($content); //PHP如何实现页面跳转 //方法一 //header("location:http://baidu.com");//直接跳转 //header("refresh:3;url=http://baidu.com");//三秒后跳转 //方法二 //echo "<meta http-equiv=refresh content="0;url="http://baidu.com">"; //去除HTML标签 $str = "<div><span>hello world !</span></div>"; echo $str."<br/>"; echo strip_tags($str)."<br/>"; echo htmlspecialchars($str)."<br/>"; //判断一个日期字符串是不是合法的 $date_str = "2015-08-02 20:45:30"; function check_data($date_str){ if(date("Y-m-d H:i:s",strtotime($date_str)) == $date_str){ return true; }else{ return false; } } var_dump(check_data($date_str)); //获取上一个月的最后一天 function get_lastmonth_lastday($date=""){ if($date != ""){ $time = strtotime($date); }else{ $time = time(); } $day = date("j",$time);//j获取该日期是当前月的第几天,然后再减去该值就是上个月的最后一天 return date("Y-m-d",strtotime("-{$day} days",$time)); } echo get_lastmonth_lastday("2015-3-27")."<br/>"; //常用的两种加密函数 $str = "Hello world !"; echo "md5加密:".md5($str)."<br/>"; echo "sha1加密:".sha1($str)."<br/>"; //把一个GBK编码的字符串转换成utf8; $str = "Hello world !世界你好!"; iconv("GBK","utf-8",$str); //如果需要元样输出用户输出的内容需要用到的函数 $str = "<div><span>hello world !</span></div>"; echo htmlspecialchars($str)."<br/>"; echo htmlentities($str)."<br/>"; //创建多级目录的PHP函数 function create_dir($path,$mode=0777){ if(is_dir($path)){ echo "文件已经存在!"; return; } if(mkdir($path,$mode,true)){ echo "文件创建成功!"; }else{ echo "文件创建失败!"; } } $path = "a/b/c/d";//相对路径从当前目录下创建指定目录 create_dir($path); //确保多进程同时写一个文件成功 $handle = fopen("myfile.txt","rd"); if(flock($handle,LOCK_EX)){//加上排他锁,其他进程必须等该锁释放后该文件后才能访问加锁的文件 fwrite($handle,"写入数据成功!");//写入文件 flock($handle,LOCK_UN);//解锁 }else{ echo "该文件已锁定!"; } //从一个URL中获取文件的扩展名 $url = "http://baidu.com/abc/de/fg.php?id=1"; function get_extension($url){ $path = parse_url($url); $ext = pathinfo($path["path"],PATHINFO_EXTENSION); return $ext; } echo "<br/>".get_extension($url)."<br/>"; //遍历指定目录下的所有文件和子文件夹 $path = "D:/wamp/www/Interview"; function get_all_file($path){ $files = array(); if(is_dir($path)){//判断文件是否存在 if($handle = opendir($path)){//获取打开的目录句柄 while($file = readdir($handle)){//循环读出文件和目录 if($file!="." && $file !=".."){//过滤掉.和.. if(is_dir($path."/".$file)){//如果是目录 $files[$file] = get_all_file($path."/".$file);//递归进行遍历 }else{ $files[] = $path."/".$file;//如果是文件则存入数组 } } } closedir($handle);//关闭目录句柄 return $files;//返回文件数组 } } } //echo "<pre>"; //print_r(get_all_file($path)); //计算出两个文件的相对路径即path2相对于$path1的相对路径 function get_relative_path($path1,$path2){ $arr1 = explode("/",dirname($path1)); $arr2 = explode("/",dirname($path2)); $length = count($arr2); for($i=0;$i<$length;$i++){ if($arr1[$i] != $arr2[$i]){//进行路径匹配 break; } } if($i == 0){ //不在同一个根目录下 $separator = array(); } if($i!=0 && $i<$length){ //在同一个个目录下 $separator = array_fill(0,($length-$i),".."); } if($i==$length){ //在同一个目录下 $separator = array("."); } $relative_path = implode("/",array_merge($separator,array_slice($arr1,$i))); return $relative_path; } $path1 = "a/b/c/d/e/hello.sh"; //参照路径path1 $path2 = "s/b/c/d/index.html"; $path3 = "a/b/c/foo.txt"; $path4 = "a/b/c/d/e/test.php"; echo get_relative_path($path1,$path2)."<br/>"; echo get_relative_path($path1,$path3)."<br/>"; echo get_relative_path($path1,$path4)."<br/>";
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: PHP引用(&)各种使用方法实例详解
- 下一篇: php生成图片的一个小示例