代码:
<?php
/************************************************************
* Filename : function file 2.0 *
* Address: New York *
* Copyright (C) 2008-2010 *
*************************************************************/
// 防注入
function inject($str) {
if(!empty($str)){
$pour=eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|<|>|\"|union|into|load_file|outfile', $str);
if($pour){
exit("<script>alert(' $str is wrong !');history.back(1)</script>");
}else{ return $str; }
}else{
exit("<script>alert(' content is empty !');history.back(1)</script>");
}
}
// 返回正整数
function isint($str){
if(!empty($str)){
$pour=preg_match("/^[0-9]*[1-9][0-9]*$/",$str);
if($pour){ return $str; }else{ exit("<script>alert(' $str is wrong !');history.back(1)</script>"); }
}else{
exit("<script>alert(' Number is empty !');history.back(1)</script>");
}
}
// 截取字段
function all_substr($str, $start, $length){
$pa="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|";
$pa.="\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $str, $t_string);
if(count($t_string[0]) - $start > $length){
return join('', array_slice($t_string[0], $start, $length)) . "...";
}else{
return join('', array_slice($t_string[0], $start, $length));
}
}
// 检测用户名
function user($str,$tips){
if(empty($str)){
exit("<script>alert('".$tips." can not be empty !');history.back(1);</script>");
}else{
$pour=preg_match("/^[a-z0-9][a-z0-9_]{3,15}$/i", $str);
if($pour){ return inject($str); }else{ exit("<script>alert(' Username is made up of 3 - 15 characters !');history.back(1)</script>"); }
}
}
// 检测是否为空
function is_empty($str,$tips){
if(empty($str)){
exit("<script>alert('".$tips." can not be empty !');history.back(1);</script>");
}else{
return inject($str);
}
}
// 验证邮件地址
function isEmail($str){
$pour=preg_match("/^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$/i",$str);
if($pour){
return $str;
}else{
exit("<script>alert(' $str is wrong !');history.back(1)</script>");
}
}
// 验证是否为数组
function is_arr($arr){
if(is_array($arr)){ return $arr; }else{ exit("<script>alert(' No datas !');history.back(1)</script>"); }
}
// 返回图片
function html_img($path,$add = '',$alt = '',$title = ''){
if(!empty($alt)){ $alt = "alt=\"".$alt."\""; } if(!empty($title)){ $title = "title=\"".$title."\""; }
return "<img src=\"".$path."\" ".$add." ".$alt." ".$title." />";
}
// 返回链接
function html_link($path,$title,$add = '',$target = ''){
if(!empty($target)){ $target = "target=\"".$target."\""; }
return "<a href=\"".$path."\" ".$target." ".$add.">".$title."</a>";
}
// 返回地址
function gotoUrl($url='',$tips=''){
if(empty($url) && empty($tips)){
exit("<script type=\"text/javascript\">history.back(1);</script>");
}elseif(!empty($url) && empty($tips)){
exit("<script type=\"text/javascript\">location='".$url."'</script>");
}elseif(empty($url) && !empty($tips)){
exit("<script type=\"text/javascript\">alert('".$tips."');history.back(1);</script>");
}else{
exit("<script type=\"text/javascript\">alert('".$tips."');location='".$url."'</script>");
}
}
// 验证url地址
function url($str){
return (preg_match("/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/",$str))?true:"URL format error!";
}
// 获取html中图片的地址
function getImg($str){
$str = stripslashes($str);
$pattern = "/<img[^>]*src\=\"(([^>]*)(jpg|gif|png|bmp|jpeg))\"/"; //获取所有图片标签的全部信息
preg_match_all($pattern, $str, $matches);
return $matches[1]; //$matches[1]中就是所想匹配的结果,结果为数组
}
// 非法字符
function isvalidname($username){
$badkey = array("\\", '|', ' ', ' ', "'", '"', '/', '*', ',', '~', ';', '<',
'>', '$', "\r", "\t", "\n",'#','*','?',':','@','!','(',')','~','`','^','&');
foreach ($badkey as $value){
if (strpos($username, $value) !== false){
return false;
exit;
}
}
return true;
}
// 去除html标签
function isbare($str){
return strip_tags($str);
}
// 在指定的预定义字符前添加反斜杠
function addline($str){
return addslashes($str);
}
// 去除预定义字符前添加反斜杠
function delline($str){
return stripslashes($str);
}
// 截取字段
function firstPath($str,$end){
return substr( $str,0,strpos( $str, $end)) ;
}
function lastPath($str,$end){
return substr( $str,strrpos($str, $end)) ;
}
// 返回路径中的文件名部分
function urlName($path,$suffix){
if(empty($suffix)){
return basename($path); //显示带有文件扩展名的文件名
}else{
return basename($path,$suffix); //显示不带有文件扩展名的文件名
}
}
// GD库是否开启
function gd(){
if(extension_loaded('gd')) {
if(function_exists('gd_info')) {
echo '<pre>'; print_r(gd_info()); echo '</pre>'; exit;
}else{
exit('OOOOPS, this GD Version is so low !');
}
}else
exit(' We can not find GD !');
}
// 返回图片信息
function myimg($img,$btn = 0){
$getinfor = @getimagesize($img);
if($btn == 1){
return $arr = array($getinfor[0],$getinfor[1]);
}elseif($btn == 2){
switch($getinfor[2]){
case 1: return 'gif'; break;
case 2: return 'jpg'; break;
case 3: return 'png'; break;
case 6: return 'bmp'; break;
}
}else{
echo '<pre>'; print_r($getinfor); echo '</pre>'; exit;
}
}
// 打印函数
function printer($arr,$add = 1){
echo '<pre>'; if($add !=1 ){ var_dump($arr); }else{ print_r($arr); } echo '</pre>'; exit;
}
//返回结果为1只有数字,2只有字符,3两者都有
function checkVS($str){
$a=0; $b=0;
for($i=0;$i<strlen($str);$i++){
$v=ord(substr($str,$i,1));
if($v>=48 and $v<=57){
$a=1;
}else{
$b=2;
}
}
return $a+$b;
}
// 返回数组中最大值
function maxi($arr){
sort($arr);
return $arr[count($arr)-1];
}
// 删除文件夹目录(允许有多级目录)
/*****
*@dir - Directory to destroy
*@virtual[optional]- whether a virtual directory
*/
function destroyDir($dir, $virtual = false)
{
$ds = DIRECTORY_SEPARATOR;
$dir = $virtual ? realpath($dir) : $dir;
$dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;
if (is_dir($dir) && $handle = opendir($dir))
{
while ($file = readdir($handle))
{
if ($file == '.' || $file == '..')
{
continue;
}
elseif (is_dir($dir.$ds.$file))
{
destroyDir($dir.$ds.$file);
}
else
{
unlink($dir.$ds.$file);
}
}
closedir($handle);
rmdir($dir);
return true;
}
else
{
return false;
}
}
// 列出目录内容 $dir 不要加 '/'
function list_files($dir)
{
if(is_dir($dir))
{
if($handle = opendir($dir))
{
while(($file = readdir($handle)) !== false)
{
if($file != "." && $file != ".." && $file != "Thumbs.db")
{
echo '<a target="_blank" href="'.$dir.'/'.$file.'">'.$file.'</a><br>'."\n";
}
}
closedir($handle);
}
}
}
// 删除指定文件
function delFile($path){
if(is_file($path)){
@unlink($path);
}
}
// 移动(目录要存在)或者修改名字
function moveFile($oldName,$newName){
@rename($oldName,$newName);
}
// 创建相应的文件夹
function createdir($dir=''){
if (!is_dir($dir)){
$temp = explode('/',$dir);
$cur_dir = '';
for($i=0;$i<count($temp);$i++){
$cur_dir .= $temp[$i].'/';
if (!is_dir($cur_dir)){
@mkdir($cur_dir,0777);
}
}
}
}
// IP 地址
function getip(){
if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){
$ip = getenv("HTTP_CLIENT_IP");
}else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){
$ip = getenv("HTTP_X_FORWARDED_FOR");
}else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")){
$ip = getenv("REMOTE_ADDR");
}else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")){
$ip = $_SERVER['REMOTE_ADDR'];
}else{
$ip = "unknown";
}
return($ip);
}
// 跳转
function flyTo($title='',$message='',$url=''){
$html ="<html><head>";
if(!empty($url)){
$html .="<meta http-equiv='refresh' content=\"3;url='".$url."'\">";
//$html .="<link href='../templates/style.css' type=text/css rel=stylesheet><style type='text/css'>";
$html .="<style type='text/css'>";
$html .="*{font-family:Arial, Helvetica, sans-serif; font-size:13px;} table{border-collapse:collapse;} .m_title{background:#DADAFF;} .line_1{background:#FFFAF6;}";
$html .="</style></head><body><br><br>";
$html .="<table cellspacing='0' cellpadding='0' border='1' width='450' align='center'>";
$html .="<tr><td bgcolor='#ffffff'>";
$html .="<table border='1' cellspacing='1' cellpadding='4' width='100%'>";
$html .="<tr class='m_title'>";
$html .="<td>".$title."</td></tr>";
$html .="<tr class='line_1'><td align='center' height='60'>";
$html .="<br>".$message."<br><br>";
$html .="The system will return in 3 seconds. <br /> If your browser does not automatically return, <br />please click [<a href=".$url." target=_self> Here </a>] Enter .";
//$html .="<br><br> [<a href='#' οnclick='history.go(-1)'> Back </a>]";
$html .="<br><br></td></tr></table></td></tr></table>";
$html .="</body></html>";
echo $html;
}
exit;
}
/*
include("function.php");
$total=mysql_num_rows($result);
pageft($total,10);
$result=mysql_query("select * from wp_shoutlugmap order by id desc limit $firstcount,$displaypg");
while($row=mysql_fetch_array($result)){
// display something
}
echo $pagenav;
*/
function pageft($totle,$displaypg=20,$url=''){
global $page,$firstcount,$pagenav,$_SERVER;
$GLOBALS["displaypg"]=$displaypg;
if(!$page){$page=1;}
if(!$url){$url=$_SERVER["REQUEST_URI"];}
$parse_url=parse_url($url);
$url_query=$parse_url["query"];
if($url_query){
$url_query=ereg_replace("(^|&)page=$page","",$url_query);
$url=str_replace($parse_url["query"],$url_query,$url);
if($url_query){$url.="&page";}else{$url.="page";}
}else {
$url.="?page";
}
$lastpg=ceil($totle/$displaypg);
$page=min($lastpg,$page);
$prepg=$page-1;
$nextpg=($page==$lastpg ? 0 : $page+1);
$firstcount=($page-1)*$displaypg;
$pagenav="显示第 <B>".($totle?($firstcount+1):0)."</B>-<B>".min($firstcount+$displaypg,$totle)."</B> 条记录,共 $totle 条记录<BR>";
if($lastpg<=1){return false;}
$pagenav.=" <a href='$url=1'>首页</a> ";
if($prepg){$pagenav.=" <a href='$url=$prepg'>前页</a> ";}else{$pagenav.=" 前页 ";}
if($nextpg){$pagenav.=" <a href='$url=$nextpg'>后页</a> ";}else{$pagenav.=" 后页 ";}
$pagenav.=" <a href='$url=$lastpg'>尾页</a> ";
$pagenav.=" 到第 <select name='topage' size='1' οnchange='window.location=\"$url=\"+this.value'>\n";
for($i=1;$i<=$lastpg;$i++){
if($i==$page){
$pagenav.="<option value='$i' selected>$i</option>\n";
}else{
$pagenav.="<option value='$i'>$i</option>\n";
}
}
$pagenav.="</select> 页,共 $lastpg 页";
}
// 产生随机字符串函数
function random($length) {
$hash = '';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
// 获得文件后缀
function extend($file_name){
$extend = pathinfo($file_name);
$extend = strtolower($extend["extension"]);
return $extend;
}
// 该函数将 URL 和 E-mail 地址字符串转换为可点击的超级链接。
function makeLinks($text) {
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)','<a href="\1">\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)','\1<a href="http://\2">\2</a>', $text);
$text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})','<a href="mailto:\1">\1</a>', $text);
return $text;
}
// 随着 WordPress 越来越普及,Gravatar 也随之流行。由于 Gravatar 提供了易于使用的API,将其纳入应用程序也变得十分方便。
/******************
*@email - Email address to show gravatar for
*@size - size of gravatar
*@default - URL of default gravatar to use
*@rating - rating of Gravatar(G, PG, R, X)
*/
function show_gravatar($email, $size, $default, $rating)
{
echo '<img src="http://www.gravatar.com/avatar.php?gravatar_id='.md5($email).
'&default='.$default.'&size='.$size.'&rating='.$rating.'" width="'.$size.'px"
height="'.$size.'px" />';
}
// 创建标签云
function getCloud( $data = array(), $minFontSize = 12, $maxFontSize = 30 )
{
$minimumCount = min( array_values( $data ) );
$maximumCount = max( array_values( $data ) );
$spread = $maximumCount - $minimumCount;
$cloudHTML = '';
$cloudTags = array();
$spread == 0 && $spread = 1;
foreach( $data as $tag => $count )
{
$size = $minFontSize + ( $count - $minimumCount )
* ( $maxFontSize - $minFontSize ) / $spread;
$cloudTags[] = '<a style="font-size: ' . floor( $size ) . 'px'
. '" href="#" title="\'' . $tag .
'\' returned a count of ' . $count . '">'
. htmlspecialchars( stripslashes( $tag ) ) . '</a>';
}
return join( "\n", $cloudTags ) . "\n";
}
/**************************
**** Sample usage ***/
/*
$arr = Array('Actionscript' => 35, 'Adobe' => 22, 'Array' => 44, 'Background' => 43,
'Blur' => 18, 'Canvas' => 33, 'Class' => 15, 'Color Palette' => 11, 'Crop' => 42,
'Delimiter' => 13, 'Depth' => 34, 'Design' => 8, 'Encode' => 12, 'Encryption' => 30,
'Extract' => 28, 'Filters' => 42);
echo getCloud($arr, 12, 36);
*/
// 为用户提供强制性的文件下载功能。
/********************
*@file - path to file
* eg: force_download('10.png');
*/
function force_download($file)
{
if ((isset($file))&&(file_exists($file))) {
header("Content-length: ".filesize($file));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $file . '"');
readfile("$file");
} else {
echo "No file selected";
}
}
// 建用户友好的日志缩略名。
function create_slug($string){
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
return $slug;
}
/****************************************************************************************
* $dir_name = 'message/templates'; //返回哪个目录的总文件数 *
* $file_count = get_file_count($dir_name); *
* echo $dir_name.'目录下文件总数:<font color="red">'.count($file_count).'</font><br />'; *
* print_r($file_count); *
*****************************************************************************************/
function get_file_count($dir_name){ //得到目录下的文件函数
global $files; //申明全局变量有于统计
$od = opendir($dir_name); //打开目录,返回连接号
while ($name = readdir($od)){ //读取目录
$file_path = $dir_name.'/'.$name; //目录 用于使用 is_file()
if (is_file($file_path)){ //是一个文件
$files[] = $file_path; //添加,用于最后的统计
}elseif (($name !='.') && ($name !='..')){ //输出$name看看就知道
get_file_count($file_path); //递归的调用
}
}
return $files; //返回目录下的总文件数
}
//
// Function: 获取远程图片并把它保存到本地
//
// 确定您有把文件写入本地服务器的权限
//
// 变量说明:
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期
// 自动生成.
function GrabImage($url,$filename='') {
if($url == ''){return false;}
if($filename == '') {
$ext = strrchr($url,'.');
if($ext != '.gif' && $ext != '.jpg'){return false;}
$filename = date('dMYHis').$ext;
}
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);
$fp2 = @fopen($filename, 'a');
fwrite($fp2,$img);
fclose($fp2);
return $filename;
}
/*
$img = GrabImage('http://dl.iteye.com/upload/picture/pic/55053/2d4fa08f-4e39-3ca2-8087-fc2fd1c836ec.jpg','');
if($img){
echo '<pre><img src="'.$img.'"></pre>';
}else{
echo 'false';
}
*/
/* 计算复活节 echo easter(); 默认为今年 */
function easter($year = ''){
return empty($year) ? date("m-d-Y", easter_date()) : date("m-d-Y", easter_date($year));
}
/***********************************************
求相对路径
$path_a = "/mytest/jquery.js";
$path_b = "/willdo/church/index.php";
echo compara_path($path_a, $path_b);
************************************************/
function compara_path($path_a, $path_b) {
//切割路径.
$array_a = explode('/', $path_a);
$array_b = explode('/', $path_b);
//从数组中删除最后的文件,剩下的全为文件夹名称.
$file_a = array_pop($array_a);
$file_b = array_pop($array_b);
//子目录个数.
$a_len = count($array_a);
$b_len = count($array_b);
//循环求出第几个目录不同.
for ( $i = 0; $i < $a_len; $i++ ) {
if ($array_a[$i] != $array_b[$i] ) {
break;
}
}
//求出相对路径.
$com_path = '';
for ( $j = 0; $j < $a_len - $i; $j++ ) {
$com_path .= '../';
}
for ( $i; $i< $b_len; $i++ ) {
$com_path .= $array_b[$i] . '/';
}
$com_path .= $file_b;
return $com_path;
}
?>