工作中总结的常用PHP代码

编程入门 行业动态 更新时间:2024-10-08 20:31:20

工作中总结的<a href=https://www.elefans.com/category/jswz/34/1769776.html style=常用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代码

本文发布于:2024-02-13 06:24:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757911.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:常用   代码   工作   PHP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!