PHP 常用函数库和一些实用小技巧


Posted in PHP onJanuary 01, 2009

文件读取函式
//文件读取函式
function PHP_Read($file_name) {
$fd=fopen($file_name,r);
while($bufline=fgets($fd, 4096)){
$buf.=$bufline;
}
fclose($fd);
return $buf;
}
?>
文件写入函式
//文件写入函式
function PHP_Write($file_name,$data,$method="w") {
$filenum=@fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
?>
静态页面生成函式
//静态页面生成函式
function phptohtm($filefrom,$fileto,$u2u=1){
if($u2u==1){
$data=PHP_Read($filefrom);
}else{
$data=$filefrom;
}
PHP_Write($fileto,$data);
return true;
}
?>
指定条件信息数量检索函式
//指定条件信息数量检索函式
function rec_exist($table,$where){
$query="select count(*) as num from $table ".$where;
$result=mysql_query($query) or die(nerror(1));
$rowcount=mysql_fetch_array($result);
$num=$rowcount["num"];
if ($num==0){
return false;
}
return $num;
}
?>
目录删除函式
//目录删除函式
function del_DIR($directory){
$mydir=dir($directory);
while($file=$mydir->read()){
if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!="..")){
del_DIR("$directory/$file");
}else{
if(($file!=".") AND ($file!="..")){
unlink("$directory/$file");
//echo "unlink $directory/$file ok ";
}
}
}
$mydir->close();
rmdir($directory);
//echo "rmdir $directory ok ";
}
?>
目录名称合法性检测函式
//目录名称合法性检测
function isen($str){
$ret="";
for($i=0;$i $p=ord(substr($str,$i,1));
if(($p<48 & $p!=45 & $p!=46) || ($p>57 & $p<65) || ($p>90 & $p<97 & $p!=95) || $p>122){
nerror("不符合规范!");
}
$ret.=chr($p);
}
return $ret;
}
?>
分页函式
//分页函式
function splitlist($HALT,$LRLIST,$ECHOCNT,$paper,$table,$where,$page_id,$userid){
global $splitstr,$sumcnt;
if($paper=="" || $sumcnt==""){
$query = "select count(*) as num from $table $where";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$sumcnt=$row["num"];
if($sumcnt==0){
nerror("该版内还没有选择发布新闻 !");
}
$paper=1;
}
$sumpaper=($sumcnt-$sumcnt%$ECHOCNT)/$ECHOCNT;
if(($sumcnt%$ECHOCNT)!=0) $sumpaper+=1;
if($sumpaper==1 && $HALT==0) return($where);
$enwhere=base64_encode(base64_encode($where));
if(($LRLIST*2+1) < $sumpaper){
if(($paper-$LRLIST) < 2){
$tract=1;
$sub=$LRLIST*2+1;
}else if(($paper+$LRLIST) >= $sumpaper){
$tract=$sumpaper-($LRLIST*2);
$sub=$sumpaper;
}else{
$tract=$paper-$LRLIST;
$sub=$paper+$LRLIST;
}
}else{
$tract=1;
$sub=$sumpaper;
}
$uppaper=$paper-1;
$downpaper=$paper+1;
$startcnt=($paper-1)*$ECHOCNT;
$where.=" limit ${ startcnt },${ ECHOCNT }";
if($tract > 1) { $splitstr="【 << "; }
else $splitstr="【 << ";
for($i=$tract;$i<=$sub;$i++){
if ($i!=$paper) $splitstr.="".$i." ";
else $splitstr.="".$i." ";
}
if ($sub!=$sumpaper) $splitstr.=">> 】";
else $splitstr.=">> 】";
return($where);
}
?>
关于分页函式的使用说明
/*
#### 检索分页函式 ####
Int $HALT - 检索结果仅分1页时是否(1/0)显示页码条
Int $LRLIST - (页码条显示页码数-1)/2
Int $ECHOCNT - 检索时每页显示记录的数量
Int $paper - 页数,预提取:$paper=$HTTP_GET_VARS[paper];
Varchar $table - 数据表名,预附值:$table="db.table";
Varchar $where - 检索条件,预附值:$where="where field='value'";
Varchar $enwhere - 将原$where进行两次base64_encode()编码后以GET的方式提交
Varchar $splitstr - 页码条输出字串,执行函式后在相应的位置执行 echo $splitstr;
函式调用前需获取变量 -
$paper=$HTTP_GET_VARS[paper];
$sumcnt=$HTTP_GET_VARS[sumcnt];
$enwhere=$HTTP_GET_VARS[enwhere];
Return (Varchar $where) - 分页后检索语句的检索条件
注意:本函式需调用出错处理函式 nerror($error);
*/
图片文件上传函式
//图片文件上传函式
function upload_img($UploadFile,$UploadFile_name,$UploadFile_size,$UploadPath,$max_size=64){
//$TimeLimit=60; //设置超时限制时间 缺省时间为 30秒 设置为0时为不限时
//set_time_limit($TimeLimit);
if(($UploadFile!= "none" )&&($UploadFile != "" )){
$FileName=$UploadPath.$UploadFile_name;
if($UploadFile_size <1024){
$FileSize="(string)$UploadFile_size" . "字节";
}elseif($UploadFile_size <(1024 * $max_size)){
$FileSize=number_format((double)($UploadFile_size / 1024), 1) . " KB";
}else{
nerror("文件超过限制大小!");
}
//{
//$FileSize="number_format((double)($UploadFile_size" / (1024 * 1024)), 1) . " MB";
// }
if(!file_exists($FileName)){
if(copy($UploadFile,$FileName)){
return "$UploadFile_name ($FileSize)";
}else{
nerror("文件 $UploadFile_name 上载失败!");
}
unlink($UploadFile);
}else{
nerror("文件 $UploadFile_name 已经存在!");
}
//set_time_limit(30); //恢复缺省超时设置
}
}
以下是一些小技巧:
如何判断ip地址合法性
if(!strcmp(long2ip(sprintf("%u",ip2long($ip))),$ip)) echo "is ipn";
----
email的正则判断
eregi("^[_.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z_-]+.)+[a-zA-Z]$", $email);
检测ip地址和mask是否合法的例子
$ip = '192.168.0.84';
$mask = '255.255.255.0';
$network = '192.168.0';
$ip = ip2long($ip);
$mask = ip2long($mask);
$network = ip2long($network);
if( ($ip & $mask) == $network) echo "valid ip and maskn";
?>
----
文件下载头部输出如何设定
header("Content-type: application/x-download");
header("Content-Disposition: attachment; filename=$file_download_name;");
header("Accept-Ranges: bytes");
header("Content-Length: $download_size");
echo 'xxx'
用header输出ftp下载方式,并且支持断点续传
一个例子:
header('Pragma: public');
header('Cache-Control: private');
header('Cache-Control: no-cache, must-revalidate');
header('Accept-Ranges: bytes');
header('Connection: close');
header("Content-Type: audio/mpeg");
header("Location:ftp://download:1bk3l4s3k9s2@232.2.22.22/2222/web技术开发知识库/cn_web.rmvb");
正则匹配中文
ereg("^[".chr(0xa1)."-".chr(0xff)."]+$", $str);
批量替换文本里面的超级链接
function urlParse($str = ''){
if ('' == $str) return $str;
$types = array("http", "ftp", "https");
$replace = <<
''.htmlentities('\1').htmlentities('\2').''
EOPHP;
$ret = $str;
while(list(,$type) = each($types)){
$ret = preg_replace("|($type://)([^\s]*)|ie ", $replace, $ret);
}
return $ret;
}

PHP 相关文章推荐
桌面中心(二)数据库写入
Oct 09 PHP
PHP新手上路(九)
Oct 09 PHP
PHP如何编写易读的代码
Jul 10 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
php登陆页的密码处理方式分享
Oct 14 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
Aug 21 PHP
php密码生成类实例
Sep 24 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
smarty的section嵌套循环用法示例
May 28 PHP
php 数组字符串搜索array_search技巧
Jul 05 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
php zlib压缩和解压缩swf文件的代码
Dec 30 #PHP
PHP HTML代码串截取代码
Dec 29 #PHP
PHP MSSQL 存储过程的方法
Dec 24 #PHP
php 获取完整url地址
Dec 20 #PHP
php xml-rpc远程调用
Dec 19 #PHP
php 设计模式之 工厂模式
Dec 19 #PHP
php 设计模式之 单例模式
Dec 19 #PHP
You might like
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
php类自动加载器实现方法
2015/07/28 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
PHP 断点续传实例详解
2017/11/11 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
Python实现接受任意个数参数的函数方法
2018/04/21 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
零件设计自荐信范文
2013/11/27 职场文书
优秀员工年终发言演讲稿
2014/01/01 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
责任担保书范文
2014/05/21 职场文书
道路施工安全责任书
2014/07/24 职场文书
工作感想范文
2015/08/07 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android