php实用总汇之function
---------------------------------防止表单重复提交/**
*
* 防止表单重复提交
* @param string $check_str
* @param int $grap_time_msec 毫秒
* @return bool false 没有重复 true 重复提交
*/
function duplicate_form_submit($check_str,$subtime_msec, $grap_time_msec = 5000){
$now = $subtime_msec;
$key = 'duplicate_form_submit';
$hash = md5($check_str);
if(isset($_SESSION[$key])) {
$data = $_SESSION[$key];
$time = $data['time'];
$last_from = $data['md5'];
if(abs($now - $time) < $grap_time_msec ) {
if( $last_from == $hash ) {
return true;
}
}
}
$_SESSION[$key] = array('time'=>$now, 'md5'=>$hash);
return false;
}
-------------------------------------Utf-8、gb2312都支持的汉字截取函数
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 gb2312
开始长度默认为 0
$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, 'gb2312');
*/
function cut_str($string, $sublen, $start = 0, $code = 'gb2312')
{
if($code == 'UTF-8')
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $string, $t_string);
if(count($t_string) - $start > $sublen) return join('', array_slice($t_string, $start, $sublen))."...";
return join('', array_slice($t_string, $start, $sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = '';
for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen))
{
if(ord(substr($string, $i, 1))>129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if(ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
return $tmpstr;
}
}
------------------写一个函数,能够遍历一个文件夹下的所有文件和子文件夹
<?
function show_list($path){
if(is_dir($path)){
$dp=dir($path);
while($file=$dp->read())
if($file!='.'&&$file!='..')
show_list($path.'/'.$file);
$dp->close();
}
echo "$path<br>";
}
show_list('phpQuery');
?>
--------------------------------------------字符串翻转
function getStr($str){
$len=strlen($str);
for ($i=0;$i<$len/2;$i++){
$temp=$str[$i];
$str[$i]=$str[$len-$i-1];
$str[$len-$i-1]=$temp;
}
return $str;
}
-------------------------------------------截取中文字符
/*
* 截取中文字符
*
*
* */
function cutStr($sourcestr,$cutlength)
{
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字符串的字节数
while (($n<$cutlength) and ($i<=$str_length))
{
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
if ($ascnum>=224) //如果ASCII位高与224,
{
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1
}
elseif ($ascnum>=192) //如果ASCII位高与192,
{
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2
$n++; //字串长度计1
}
elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数仍计1个
$n++; //但考虑整体美观,大写字母计成一个高位字符
}
else //其他情况下,包括小写字母和半角标点符号,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数计1个
$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...
}
}
if ($str_length>$cutlength){
$returnstr = $returnstr . "...";//超过长度时在尾处加上省略号
}
return $returnstr;
}
/*
* 判断远程文件是否存在
*
*
* */
function remote_file_exists($url_file){
//检测输入
$url_file = trim($url_file);
if (empty($url_file)) { return false; }
$url_arr = parse_url($url_file);
if (!is_array($url_arr) || empty($url_arr)){ return false; }
//获取请求数据
$host = $url_arr['host'];
$path = $url_arr['path'] ."?". $url_arr['query'];
$port = isset($url_arr['port']) ? $url_arr['port'] : "80";
//连接服务器
$fp = fsockopen($host, $port, $err_no, $err_str, 30);
if (!$fp){ return false; }
//构造请求协议
$request_str = "GET ".$path." HTTP/1.1\r\n";
$request_str .= "Host: ".$host."\r\n";
$request_str .= "Connection: Close\r\n\r\n";
//发送请求
fwrite($fp, $request_str);
$first_header = fgets($fp, 1024);
fclose($fp);
//判断文件是否存在
if (trim($first_header) == ""){ return false; }
if (!preg_match("/200/", $first_header)){
return false;
}
return true;
}
//SQL ADDSLASHES
function saddslashes($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = saddslashes($val);
}
} else {
$string = addslashes($string);
}
return $string;
}
/*
* 20M转换成20*1024*1024B
*/
function transSpaceSize($size){
$size=strtoupper($size);
$num=(int)preg_replace("//","", $size);
if(strpos($size,"T")!==false)
return $num*1024*1024*1024*1024;
elseif(strpos($size,"G")!==false)
return $num*1024*1024*1024;
elseif(strpos($size,"M")!==false)
return $num*1024*1024;
elseif(strpos($size,"K")!==false)
return $num*1024;
else
return $num;
}
/*
* 把byte转换成KB,MB,GB
*/
function getUnit($size){
$array_unit=array(array(1,"Byte"),
array(1024,"KB"),
array(1024*1024,"MB"),
array(1024*1024*1024,"GB"),
array(1024*1024*1024*1024,"TB")
);
foreach($array_unit as $u){
$tmp=round($size/$u,2);
if($tmp<1024){
return $tmp.$u;
break;
}
}
}
function file_ext($filename)
{
return trim(substr(strrchr($filename, '.'), 1, 10));
}
/**
* 逐一检测并创建每一级目录
* @param string $dir_path 目录路径
*$cur_dir 绝对路径
* @return int $mod 目录权限
*/
function ios_mkdir($cur_dir,$dir_path, $mod=0777){
$cur_dir=$cur_dir."/";
if (is_dir($cur_dir . $dir_path)){
return true;
}
$arr_path = explode('/', $dir_path);
foreach ($arr_path as $val){
if (!empty($val)){
$cur_dir .= $val;
if (is_dir($cur_dir)){
$cur_dir .= '/';
continue;
}
if (mkdir($cur_dir,$mod)){
$cur_dir .= '/';
fclose(fopen($cur_dir.'index.htm', 'w'));
}else{
return false;
}
}
}
return true;
}
/**
* 删除目录及目录下的所有文件
*
* @param string $dir
*
* @return boolen
*/
function ios_rmdir($dir)
{
$dir = str_replace(array('..', "\n", "\r"), array('', '', ''), $dir);
$ret_val = false;
if (is_dir($dir))
{
$d = @dir($dir);
if($d)
{
while (false !== ($entry = $d->read()))
{
if($entry!='.' && $entry!='..')
{
$entry = $dir.'/'.$entry;
if(is_dir($entry)){
ios_rmdir($entry);
}
else{
@unlink($entry);
}
}
}
$d->close();
$ret_val = rmdir($dir);
}
}
else{
$ret_val = unlink($dir);
}
return $ret_val;
}
页:
[1]