常用PHP代码"/>
工作中总结的常用PHP代码
【目录】
◆PHP常用的代码
◆HTML常用代码
【值传递 和 引用传递】
【单例模式】
【魔术常量】
【代码调试(自定义一个简单的debug函数)】
【thinkphp多表查询】
【获取客户端IP地址】
【PHP json_encode中文乱码解决方法】
【Apache设置二级域名和虚拟主机,在httpd.conf的最后】
【CURL 获取远程网页数据】
【使用CURL抓取网页】
【在cURL中用POST方法发送数据】
【使用cURL上传文件】
【上传网络图片】
【PHP将XML数据转换为数组】
【数组使用中的细节】
【数组排序】(冒泡排序、选择排序、入排序法)
【数组的查找】(顺序查找、二分查找法)
【下载文件】
【从一个标准 url 里取出文件的扩展名】
【复制非空目录】
【删除非空目录】
【PHP读取一个目录下的文件个数】
【php获取目录中的所有文件名】
【判断远程图片(文件)是否存在】
【按照年月日创建目录,并返回目录地址】
【PHP操作MySQL】
【PHP操作mysqli】
【PHP操作MySQL的事务】
【PHP删除MySQL数据库下的所有数据表】
【了解备用:PDO】
【了解备用:ADODB】
----------------《开始》-----------------
◆PHP常用的代码
date_default_timezone_set(PRC); //时区设置header("Content-type: text/html; charset=utf-8");error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_WARNING);ini_set ('memory_limit', '1280M');
◆ HTML常用代码
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="jquery-1.3.1.js"></script>
<meta charset="UTF-8"> <meta http-equiv ="refresh" content ="60"> #定时刷新页面 body{-webkit-user-select:none;} #CSS控制页面文字不能复制
【值传递和引用传递】
$p=213;function ddd(&$q){ $q=314;}ddd($p);echo $p; //不加&符号的时候,输出为213,加上后输出为314
【单例模式】
<?phpclass demo{private static $obj; //保存对象的静态属性private function __construct(){} //私有化构造函数private function __clone(){} //禁止克隆public static function getInstance(){if(!(self::$obj instanceof self)){self::$obj = new self;}return self::$obj;}}?>
【魔术常量】
class moshu{function __construct(){echo "<br>".__LINE__; //当前的行数echo "<br>".__FILE__; //当前文件绝对路径及文件名echo "<br>".__DIR__; //当前文件绝对路径echo "<br>".__CLASS__;//当前的类名echo "<br>".__FUNCTION__; //当前的函数(方法)名echo "<br>".__METHOD__; //类的方法名echo "<br>".__NAMESPACE__; //命名空间[不常用]}}$ms=new moshu();
【代码调试(自定义一个简单的debug函数)】
function debug(){$num_args = func_num_args(); //实参个数$arg_list = func_get_args(); //返回某一个实参,必须是实参数组的索引;for($i=0;$i<$num_args;$i++){echo "第 $i 个变量的值为:".$arg_list[$i]."<br>";}echo "当前所处的文件名为:".__FILE__."<br><br>";}
【thinkphp多表查询】
$table="tb_user a,tb_info b";$field="a.id,a.name,a.sex,b.img";$order="a.id desc,b.create_time desc";$map['a.is_del']=0;$limit=(($_GET['page']-1)*$_GET['limit']).','.$_GET['limit'];$list = M('')->table($table)->field($field)->where($map)->order($order)->limit($limit)->select();$sql_res = M('')->getLastSql();
【获取客户端IP地址】
function getIP(){$ip=getenv('REMOTE_ADDR');$ip_ = getenv('HTTP_X_FORWARDED_FOR');if (($ip_ != "") && ($ip_ != "unknown")){$ip=$ip_;}return $ip;}
【PHP json_encode中文乱码解决方法】
$testJSON=array('name'=>'中文字符串','value'=>'test');foreach ( $testJSON as $key => $value ) {$testJSON[$key] = urlencode ( $value );}echo urldecode ( json_encode ( $testJSON ) );
【Apache设置二级域名和虚拟主机,在httpd.conf的最后】
NameVirtualHost *:80<VirtualHost *:80>ServerName www.aDocumentRoot "D:/www"</VirtualHost><Directory "D:/www" >Options FollowSymLinksAllowOverride AllOrder allow,denyAllow from all</Directory>Options FollowSymLinks 表示不列出目录下的文件,如果要列出文件列表,则使用 Options Indexes FollowSymLinks。C:\Windows\System32\drivers\etc 目录下hosts文件中(Ubuntu 系统下,是在 /etc/hosts 文件中):最后添加一行:127.0.0.1 www.a。
----------------《CURL》-----------------
【CURL 获取远程网页数据】
$curl = curl_init();curl_setopt($curl, CURLOPT_URL, "");curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0); //第三个参数是1表示不输出,0允许输出$data = curl_exec($curl);curl_close($curl);
【使用CURL抓取网页】
<?phpheader("Content-type:text/html;charset=utf-8");/*CURL的具体实现,抓取网页,类似于直接file_get_contents() *///--- 1.初始化$ch = curl_init();//--- 2.设置选项,包括urlcurl_setopt($ch, CURLOPT_URL, "");//将curl_exec() 获取的信息以文件流的形式返回,而不是直接输出curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//启用时会将头文件的信息作为数据流输出curl_setopt($ch, CURLOPT_HEADER, 1);//--- 3.执行并获取HTML文档内容$output = curl_exec($ch);//curl_getinfo() 函数返回CURL执行后这一请求的相关信息,对调试和排查错误很有用//$info = curl_getinfo($ch); print_r($info);//--- 4.释放CURL句柄curl_close($ch);echo $output;?>
【在cURL中用POST方法发送数据】
<?phpheader("Content-type:text/html;charset=utf-8");//提交后的数据接收部分if(isset($_GET['type']) && $_GET['type']=='tijiao'){print_r($_POST);exit;}//CURL请求部分$url = "http://localhost/test/code04/code03.php?type=tijiao";$post_data = array('username'=>'root','password'=>'123456','name'=>'管理员',);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置为POSTcurl_setopt($ch, CURLOPT_POST, 1);//把POST的变量加上curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);$output = curl_exec($ch);curl_close($ch);echo $output;?>
【使用cURL上传文件】
<?phperror_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_WARNING);header("Content-type:text/html;charset=utf-8");//提交后的数据接收部分if(isset($_GET['type']) && $_GET['type']=='tijiao'){echo '<pre>';print_r($_FILES);echo '</pre>';exit;}//CURL请求部分$url = "http://localhost/test/code04/code04.php?type=tijiao";//注意下面一定要有@符号!$post_data = array('files1'=>'@E:/test/s1.jpg','files3'=>'@E:/test/s2.zip',);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);$output = curl_exec($ch);curl_close($ch);echo $output;?>
【上传网络图片】
$pic_url = $_POST['pic_url'];$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "/image/crawl_upload.php?token=mmkj2xai823@asin&pic_url= $pic_url" );curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER, 0);$output = curl_exec($ch); //执行并获取HTML文档内容curl_close($ch);print_r($output );
----------------《PHP数组》-----------------
【PHP将XML数据转换为数组】
function xml_to_array($xml){$array = (array)(simplexml_load_string($xml));foreach ($array as $key=$item){$array[$key] = struct_to_array((array)$item);}return $array;}function struct_to_array($item) {if(!is_string($item)) {$item = (array)$item;foreach ($item as $key=$val){$item[$key] = struct_to_array($val);}}return $item;}
【数组使用中的细节】
(1)创建数组时,如果没有给某个元素指定key,则会用目前最大的key(整数)+1 作为该元素的key:
$arr=array(5=>"logo",567,90);echo $arr[5]; //值为”logo”echo $arr[6]; //值为567
(2)如果使用[true ,false ,null,小数] 作为key, 则等价于[1,0,””(空字符串),截断小数点后的数值]
$arr[true]="hello"; //==> $arr[1]$arr[false]="world"; //==> $arr[0]$arr[null]="北京"; //==> $arr[""];$arr[3.14]="北京"; //==> $arr[3];
【数组排序】:从效率上看 ------- 冒泡法< 选择排序法 < 插入排序法
(1)冒泡排序
function bubbleSort(&$arr){ //注意这里&$temp=0;for($i=0;$i<count($arr)-1;$i++){for($j=0;$j<count($arr)-1-$i;$j++){if($arr[$j]>$arr[$j+1]){ $temp=$arr[$j];$arr[$j]=$arr[$j+1];$arr[$j+1]=$temp;}}}}
(2)选择排序
function selectSort(&$arr){ $temp=0;for($i=0;$i<count($arr)-1;$i++){ //假设 $i就是最小的数$minVal=$arr[$i];//记录我认为的最小数的下标$minIndex=$i;for($j=$i+1;$j<count($arr);$j++){//说明我们认为的最小值,不是最小值if($minVal>$arr[$j]){$minVal=$arr[$j];$minIndex=$j;}}//最后交换 $temp=$arr[$i];$arr[$i]=$arr[$minIndex];$arr[$minIndex]=$temp;}}
(3)插入排序法
function insertSort(&$arr){ //先默认下标为0 这个数已经是有序for($i=1;$i<count($arr);$i++){//$insertVal是准备插入的数$insertVal=$arr[$i];//准备先和$insertIndex比较$insertIndex=$i-1;//如果这个条件满足,说明,我们还没有找到适当的位置while($insertIndex>=0&&$insertVal<$arr[$insertIndex]){ //同时把数后移$arr[$insertIndex+1]=$arr[$insertIndex];$insertIndex--;}//插入(这时就给$insertVal找到适当位置) $arr[$insertIndex+1]=$insertVal; } }
【数组的查找】
(1)顺序查找
function search(&$arr,$findVal){$flag=false; foreach($arr as $k=>$v){ if($findVal==$arr[$k]){echo "找到了,下标为:$k".'<br>';$flag=true;//break;}}if(!$flag){echo '没有找到!';}}
(1)二分查找法(前提是 该数组本身已经是一个有序数组. 如果该数组不是有序的,则必须先排序再查找)
function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){ //$leftIndex为数组最左端下标[0],$rightIndex为最右端下标[count($arr)]//当 $leftIndex>$rightIndex 说明没有数if($leftIndex>$rightIndex){echo "没有找到...";return; //必须有}//找到中间这个数$middleIndex=round(($rightIndex+$leftIndex)/2);//如果大于中间这个数,则向后面找if($findVal>$arr[$middleIndex]){ binarySearch($arr,$findVal,$middleIndex+1,$rightIndex);}//如果小于中间这个数,则向前面找elseif($findVal<$arr[$middleIndex]){binarySearch($arr,$findVal,$leftIndex,$middleIndex-1);}else{echo "找到这个数,下标是:$middleIndex";} }
----------------《PHP操作文件》-----------------
【下载文件】
<?phpheader("Content-Type:image/gif");header('Content-Disposition: attachment; filename="logo3333.gif"');header('Content-Length:'.filesize("logo.gif"));readfile("logo.gif");
【从一个标准 url 里取出文件的扩展名】
function getExt($url){$arr = parse_url($url);$file = basename($arr['path']);$ext = explode(".",$file);return $ext[1];}$str = ".php?id=1";echo getExt($str);// 输出:php
【复制非空目录】
<?phpheader("Content-type: text/html; charset=utf-8");$dirname="phpMyAdmin";copydir($dirname,"hello1");functioncopydir($dirsrc, $dirto){if(is_file($dirto)){echo"目标不是目录不能创建";return;}if(!file_exists($dirto)){mkdir($dirto);//echo "创建目录".$dirto."成功!<br>";} $dir=opendir($dirsrc);while($filename=readdir($dir)){if($filename!="."&& $filename!=".."){$file1=$dirsrc."/".$filename;$file2=$dirto."/".$filename;if(is_dir($file1)){copydir($file1, $file2);//递归处理}else{copy($file1, $file2);}}}closedir($dir);}?>
【删除非空目录】
<?phpheader("Content-type: text/html; charset=utf-8");$dirname="phpMyAdmin";deldir($dirname);functiondeldir($dirname){if(file_exists($dirname)) {$dir=opendir($dirname);while($filename=readdir($dir)){if($filename!="."&& $filename!=".."){$file=$dirname."/".$filename;if(is_dir($file)){deldir($file);//使用递归删除子目录 }else{echo'删除文件<b>'.$file.'</b>成功<br>';unlink($file);}}}closedir($dir);echo'删除目录<b>'.$dirname.'</b>成功<br>';rmdir($dirname);}}?>
【PHP读取一个目录下的文件个数】
<?phpfunction FileCount($dir){global $count;if(is_dir($dir)&&file_exists($dir)){$ob=scandir($dir);foreach($ob as $file){if($file=="."||$file==".."){continue;}$file=$dir."/".$file;if(is_file($file)){$count++;}elseif(is_dir($file)){FileCount($file);}}} }//调用方法$count=0;FileCount("DataRoom");echo $count;exit;?>
【php获取目录中的所有文件名】
<?php$handler = opendir('pic/common');while( ($filename = readdir($handler)) !== false ) {if($filename != "." && $filename != ".."){echo $filename;}}closedir($handler);?>
function getAllFiles($dir){$handler = opendir($dir);$list = array();while( ($filename = readdir($handler)) !== false ) {if($filename != "." && $filename != ".."){$list[] = $filename;}}closedir($handler);return $list; }
【判断远程图片(文件)是否存在】
function check_remote_file_exists($url) {$curl = curl_init($url);curl_setopt($curl, CURLOPT_NOBODY, true); // 不取回数据$result = curl_exec($curl); // 发送请求$found = false;if ($result !== false) {$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($statusCode == 200) {$found = true; }}curl_close($curl);return $found;}
【按照年月日创建目录,并返回目录地址】
function makeDir(){date_default_timezone_set('Asia/Shanghai');$log_path = $_SERVER['DOCUMENT_ROOT'].'/FxData';//创建“年份”文件夹,格式为: /Data/2014$log_path_year = $log_path.'/'.date("Y",time());if(!is_dir($log_path_year)) {mkdir($log_path_year, 0777, true);}//创建“月份”文件夹,格式为: /Data/2014/201412$log_path_month = $log_path_year.'/'.date("Ym",time());if(!is_dir($log_path_month)) {mkdir($log_path_month, 0777, true);}//创建“日期”文件夹,格式为: /Data/2014/201412/20141212$log_path_date = $log_path_month.'/'.date("Ymd",time());if(!is_dir($log_path_date)) {mkdir($log_path_date, 0777, true);}return $log_path_date;}
----------------《PHP操作MySQL》-----------------
【PHP操作MySQL】
$conn=mysql_connect($db_host,$db_user,$db_pwd) or die("连接服务器失败");mysql_select_db($db_name,$conn) or die("选择数据库失败");$result=mysql_query("select * from employee") or die("查询失败");while($row = mysql_fetch_array($result)){$res[] = $row;}print_r($res);mysql_free_result($result);// 释放结果集内存mysql_close($conn);
【PHP操作mysqli】
$mysqli=new mysqli($db_host,$db_user,$db_pwd,$db_name) ;$result=$mysqli->query("select * from employee");while($row =$result->fetch_array()){ $res[] = $row;}print_r($res);$result->free();$mysqli->close();
【PHP操作MySQL的事务】
$mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");$mysqli->autocommit(0);$error=true;$price=50;$sql="update zh set ye=ye-{$price} where name='zhangsan'";$result=$mysqli->query($sql);if(!$result){$error=false;echo "从张三转出失败<br>";}else{if($mysqli->affected_rows==0){$error=false;echo "张三的钱没有变化"; }else{echo "从张三账号中转出成功!<br>";}}$sql="update zh set ye=ye+{$price} where name='lisi1'";$result=$mysqli->query($sql);if(!$result){$error=false;echo "从李四转入失败<br>";}else{if($mysqli->affected_rows==0){$error=false;echo "李四的钱没有变化"; }else{echo "向李四账号中转入成功!<br>";}}if($error){echo "转账成功!";$mysqli->commit();}else{echo "转账失败!";$mysqli->rollback();}$mysqli->autocommit(1);$mysqli->close();
【PHP删除MySQL数据库下的所有数据表】
$hostname ='localhost'; $userid = 'username'; $password = 'password'; $dbname = 'dbname'; $connect = mysql_connect($hostname,$userid,$password); mysql_select_db($dbname);$result = mysql_query("show table status from $dbname",$connect); while($data=mysql_fetch_array($result)) { mysql_query("drop table $data[Name]"); }
【了解备用:PDO】
PDO即 PHP DATA OBJECTS,是PHP定义的一个轻量级的数据操作接口,并且此接口实现了事务和不同数据库之间的抽象。
$dsn = 'mysql:dbname=renxing;host=localhost';$user_name = 'root'; $user_pwd = 'root';$pdo = new PDO($dsn, $user_name, $user_pwd);$query="select * from employee";foreach ( $pdo->query($query) as $row){$res[] = $row;}print_r($res);//执行操作:$pdo->exec("delete from employee where id>4";);
◆ PDO的事务:
(1)开始事务:beginTransaction()方法,该方法会关闭自动提交(autocommit)模式,直到事务提交或者回滚以后才能恢复。
(2)提交事务:commit()方法成功返回true,否则返回false
(3)回滚事务:rollBack()方法
【了解备用:ADODB】
include('adodb/adodb.inc.php');$conn = ADONewConnection('mysql');//MySQL数据库$conn->Connect("localhost", "root", "root", "renxing");//连接数据库$result=$conn->Execute("select * from employee");//执行查询foreach ($result as $row) {print_r($row);}$conn -> Close();//关闭连接
◆ ADODB获取结果:
(1)GetAll()方法可获取表中的所有记录,并返回包含结果集的一个数组
(2)GetRow()方法可获取单条记录
(3)GetOne()方法可获取结果集中某条记录的第一个字段的值。
(4)RecordCount()方法可获取结果集中行的个数,FieldCount()方法可获取结果集中字段的个数。
(5)FetchField()方法可获取指定字段的名称、数据类型、是否为主键。
◆ ADODB的其他功能:
(1)开启调试功能:$conn->debug=true;程序在运行时会输出SQL语句。
(2)对查询进行缓存:$conn->CacheExecute($time,$query);清除缓存使用CacheFlush()方法。
(3)ADODB的事务处理:开始事务StartTrans()方法,结束事务Complete()方法,强制执行回滚FailTrans()方法,获知处理事务是否成功HasFailedTrans()方法。
----------------《完》-----------------
转载于:.html
更多推荐
工作中总结的常用PHP代码
发布评论