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 相关文章推荐
PHP操作数组相关函数
Feb 03 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
phpinfo的知识点总结
Oct 10 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 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
一个用于网络的工具函数库
2006/10/09 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
Python之多进程与多线程的使用
2021/02/23 Python
医学实习生自我鉴定
2013/12/12 职场文书
婚礼主持结束词
2014/03/13 职场文书
微笑服务标语
2014/06/24 职场文书
优秀教师个人总结
2015/02/11 职场文书