`
我心旋律
  • 浏览: 34071 次
  • 性别: Icon_minigender_1
  • 来自: 浙江宁波
文章分类
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
常用的正则表达式 正则表达式
常用的一些正则表达式,供参考:
  
//判断输入内容是否为空      
function IsNull(){      
    var str = document.getElementById('str').value.trim();      
    if(str.length==0){      
        alert('对不起,文本框不能为空或者为空格!');//请将“文本框”改成你需要验证的属性名称!       
    }      
}    
    
  
     
//判断日期类型是否为YYYY-MM-DD格式的类型       
function IsDate(){       
    var str = document.getElementById('str').value.trim();      
    if(str.length!=0){      
        var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;       
        var r = str.match(reg);       
        if(r==null)      
            alert('对不起,您输入的日期格式不正确!'); //请将“日期”改成你需要验证的属性名称!     1.        }      
}       
    
  
  
   
//判断日期类型是否为YYYY-MM-DD hh:mm:ss格式的类型       
function IsDateTime(){       
    var str = document.getElementById('str').value.trim();      
    if(str.length!=0){      
        var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;       
        var r = str.match(reg);       
        if(r==null)      
        alert('对不起,您输入的日期格式不正确!'); //请将“日期”改成你需要验证的属性名称!     1.    }      
}      
  
  
   
     
//判断日期类型是否为hh:mm:ss格式的类型       
function IsTime()       
{       
    var str = document.getElementById('str').value.trim();      
    if(str.length!=0){      
    reg=/^((20|21|22|23|[0-1]\d)\:[0-5][0-9])(\:[0-5][0-9])?$/       
        if(!reg.test(str)){      
            alert("对不起,您输入的日期格式不正确!");//请将“日期”改成你需要验证的属性名称!     1.        }      
    }      
}    
  
  
     
     
//判断输入的字符是否为英文字母       
function IsLetter()       
{       
        var str = document.getElementById('str').value.trim();      
        if(str.length!=0){      
        reg=/^[a-zA-Z]+$/;       
        if(!reg.test(str)){      
            alert("对不起,您输入的英文字母类型格式不正确!");//请将“英文字母类型”改成你需要验证的属性名称!    1.1.1.        }      
        }      
}       
     
  
  
  
//判断输入的字符是否为整数       
  
function IsInteger()       
{         
        var str = document.getElementById('str').value.trim();      
        if(str.length!=0){      
        reg=/^[-+]?\d*$/;       
        if(!reg.test(str)){      
            alert("对不起,您输入的整数类型格式不正确!");//请将“整数类型”要换成你要验证的那个属性名称!     1.        }      
        }      
}       
  
  
  
  
  
     
//判断输入的字符是否为双精度       
  
function IsDouble(val)       
{       
        var str = document.getElementById('str').value.trim();      
        if(str.length!=0){      
        reg=/^[-\+]?\d+(\.\d+)?$/;      
        if(!reg.test(str)){      
            alert("对不起,您输入的双精度类型格式不正确!");//请将“双精度类型”要换成你要验证的那个属性名称!   1.1.    
        }      
        }      
}       
     
  
  
     
//判断输入的字符是否为:a-z,A-Z,0-9,_      
function IsString()       
{       
        var str = document.getElementById('str').value.trim();      
        if(str.length!=0){      
        reg=/^[a-zA-Z0-9_]+$/;       
        if(!reg.test(str)){      
            alert("对不起,您输入的字符串类型格式不正确!");//请将“字符串类型”要换成你要验证的那个属性名称!   1.1.    
        }      
        }      
}      
  
   
     
//判断输入的字符是否为中文       
  
function IsChinese()       
{       
        var str = document.getElementById('str').value.trim();      
        if(str.length!=0){      
        reg=/^[\u0391-\uFFE5]+$/;      
        if(!reg.test(str)){      
            alert("对不起,您输入的字符串类型格式不正确!");//请将“字符串类型”要换成你要验证的那个属性名称!   1.1.    
        }      
        }      
}       
  
  
     
//判断输入的EMAIL格式是否正确       
  
function IsEmail()       
{       
        var str = document.getElementById('str').value.trim();      
        if(str.length!=0){      
        reg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;      
        if(!reg.test(str)){      
            alert("对不起,您输入的字符串类型格式不正确!");//请将“字符串类型”要换成你要验证的那个属性名称!   1.1.    
        }      
        }      
}       
   
  
    
//判断输入的邮编(只能为六位)是否正确       
  
function IsZIP()       
{       
        var str = document.getElementById('str').value.trim();      
        if(str.length!=0){      
        reg=/^\d{6}$/;      
        if(!reg.test(str)){      
            alert("对不起,您输入的字符串类型格式不正确!");//请将“字符串类型”要换成你要验证的那个属性名称!   1.1.    
        }      
        }      
}     
  
   
     
//判断输入的数字不大于某个特定的数字       
  
  
function MaxValue()       
{       
    var val = document.getElementById('str').value.trim();      
        if(str.length!=0){      
       reg=/^[-+]?\d*$/;       
        if(!reg.test(str)){//判断是否为数字类型       
          if(val>parseInt('123')) //“123”为自己设定的最大值       
           {       
                alert('对不起,您输入的数字超出范围');//请将“数字”改成你要验证的那个属性名称!     1.            }       
        }      
    }      
}  
防止表单重复提交 防止表单重复提交
解决方案一:引入cookie机制来解决

提交页面代码如下a.php代码如下:

<form id="form1" name="form1" method="post" action="t2.php">
    <p>说明
        <input type="text" name="titile" />
    </p>

    <p>
        <input type="submit" name="Submit" value="提交" />
    </p>
</form>

<?php

setcookie("onlypost", 't');  //设置cookie,可以带上时间值。像有些论坛防止灌水就可以将你的一些基本信息存放到里面。

?>

处理页面b.php代码如下:

<?php

if($_COOKIE['onlypost'] == 't'){

    print_r($_COOKIE);

    //处理提交的内容           如果验证成功则处理

    print "ok";

    setcookie("onlypost", 'f'); //改变cooike值删除也可以了

}

?>
如上处理的缺点:如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。

 

解决方案二:使用session(这个与JSP处理方法是一样的)

利用PHP的Session功能,也能避免重复提交表单。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交。

A页面代码:

<?php

session_start();                //根据当前SESSION生成随机数

$code = mt_rand(0,1000000);

$_SESSION['code'] = $code;      //将此随机数暂存入到session

?>

<form id="form1" name="form1" method="post" action="t2.php">
    <p>说明
        <input type="text" name="titile" />
        <input type="hidden" name="originator" value="<?php echo $code;?>">
    </p>
    <p>
        <input type="submit" name="Submit" value="提交" />
    </p>
</form>

B页面代码:

<?php

session_start();

if(isset($_POST['originator'])) {

    if($_POST['originator'] == $_SESSION['code']){

        echo "ok";

        unset($_SESSION["code"]);               //将其清除掉此时再按F5则无效

    }else{

    echo "请不要刷新本页面或重复提交表单";

    }

}?>

 

解决方案三:在服务器端做重定向处理

if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
// 处理数据,如插入数据后,立即转向到其他页面
header('location:submits_success.php');     //效果与JSP里面的sendRedirect类似
}
常用正则表达式(PHP5.3x) preg_match
/*
*判断数字
*/
function is_num($str){
	if(strlen($str)>0){
	return preg_match('/^\d+$/',$str);
	}
}

function check_str($str,$ereg){
	if(!isset($str)){
		return false;
	}else{
		return  preg_match($ereg,$str);
	}
	
}
/*
/*大小写字母,数字,可带下划线
*/
function is_str($str){
	if(strlen($str)>0){
	return  preg_match('/^\w+$/',$str);
	}
}

/*
/*验证电子邮件地址
*/
function checkmail($nmail){   
	if(preg_match('/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/',$nmail))
		return true;
	else
		return false;
}
$_SERVER函数 $_server['document_root']
$_SERVER函数简介
$_SERVER["QUERY_STRING"]//查询(query)的字符串
$_SERVER["REQUEST_URI"]//访问此页面所需的URI
$_SERVER["SCRIPT_NAME"]//包含当前脚本的路径
$_SERVER["PHP_SELF"]//当前正在执行脚本的文件名
$_SERVER['DOCUMENT_ROOT'];//获取服务器物理地址
实例:
1,http://ask.mbatrip.com (打开主页)
结果:
$_SERVER["QUERY_STRING"] = “”
$_SERVER["REQUEST_URI"]  = “/”
$_SERVER["SCRIPT_NAME"]  = “/index.php”
$_SERVER["PHP_SELF"]     = “/index.php”

2,http://ask.mbatrip.com/?tags/上传(附带查询)
结果:
$_SERVER["QUERY_STRING"] = “tags/上传″
$_SERVER["REQUEST_URI"]  = “/?tags/上传″
$_SERVER["SCRIPT_NAME"]  = “/index.php”
$_SERVER["PHP_SELF"]     = “/index.php”

3,http://ask.mbatrip.com/?tags/上传/2
结果:
$_SERVER["QUERY_STRING"] = “tags/上传/2”
$_SERVER["REQUEST_URI"]  = “/?tags/上传/2”
$_SERVER["SCRIPT_NAME"]  = “/index.php”
$_SERVER["PHP_SELF"]     = “/index.php”
$_SERVER["QUERY_STRING"]获取查询语句,实例中可知,获取的是?后面的值
$_SERVER["REQUEST_URI"] 获取http://ask.mbatrip.com后面的值,包括/
$_SERVER["SCRIPT_NAME"] 获取当前脚本的路径,如:index.php
$_SERVER["PHP_SELF"] 当前正在执行脚本的文件名
弹出层 弹出层
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js显示隐藏层</title>
<script language="JavaScript" type="text/JavaScript">
function toggle(targetid,objN){
  
   var target=document.getElementById(targetid);
   var ob=document.getElementById(objN)

		if (target.style.display=="block"){
			target.style.display="none";
			ob.innerText="显示";		
		} else {
			target.style.display="block";
			ob.innerText='隐藏';
		}
  
}
</script>
<style type="text/css">
#demo{
background-color:#CCCCCC;
height:100px;
width:700px;
display:none;
}
</style>
</head>

<body>
<a href="#" id="bg" onClick="toggle('demo','bg')">显示</a>
<div id="demo"><a href="http://www.baidu.com/">欢迎来带实用PHP</div>
</body>
</html>
PHP压缩,解压缩 php, 压缩, 解压缩, 代码
<?php
    class PHPZip
    { 
        /**********************************************************
         * 解压部分
         **********************************************************/
        // ------------------------------------------------------ //
        // ReadCentralDir($zip, $zipfile)
        // $zip是经过@fopen($zipfile, 'rb')打开的
        // $zipfile是zip文件的路径
        // ------------------------------------------------------ //
        private function ReadCentralDir($zip, $zipfile)
        {
            $size     = filesize($zipfile);
            $max_size = ($size < 277) ? $size : 277;
            
            @fseek($zip, $size - $max_size);
            $pos   = ftell($zip);
            $bytes = 0x00000000;
            
            while($pos < $size)
            {
                $byte  = @fread($zip, 1);
                $bytes = ($bytes << 8) | Ord($byte);
                $pos++;
                if($bytes == 0x504b0506){ break; }
            }
            
            $data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', fread($zip, 18));

            $centd['comment']      = ($data['comment_size'] != 0) ? fread($zip, $data['comment_size']) : '';  // 注释
            $centd['entries']      = $data['entries'];
            $centd['disk_entries'] = $data['disk_entries'];
            $centd['offset']       = $data['offset'];
            $centd['disk_start']   = $data['disk_start'];
            $centd['size']         = $data['size'];
            $centd['disk']         = $data['disk'];
            return $centd;
        }
        
        
        private function ReadCentralFileHeaders($zip)
        {
            $binary_data = fread($zip, 46);
            $header      = unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $binary_data);

            $header['filename'] = ($header['filename_len'] != 0) ? fread($zip, $header['filename_len']) : '';
            $header['extra']    = ($header['extra_len']    != 0) ? fread($zip, $header['extra_len'])    : '';
            $header['comment']  = ($header['comment_len']  != 0) ? fread($zip, $header['comment_len'])  : '';

    
            if($header['mdate'] && $header['mtime'])
            {
                $hour    = ($header['mtime']  & 0xF800) >> 11;
                $minute  = ($header['mtime']  & 0x07E0) >> 5;
                $seconde = ($header['mtime']  & 0x001F) * 2;
                $year    = (($header['mdate'] & 0xFE00) >> 9) + 1980;
                $month   = ($header['mdate']  & 0x01E0) >> 5;
                $day     = $header['mdate']   & 0x001F;
                $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
            } else {
                $header['mtime'] = time();
            }
            $header['stored_filename'] = $header['filename'];
            $header['status'] = 'ok';
            if(substr($header['filename'], -1) == '/'){ $header['external'] = 0x41FF0010; }  // 判断是否文件夹
            return $header;
        }
    
    
        private function ReadFileHeader($zip)
        {
            $binary_data = fread($zip, 30);
            $data        = unpack('vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $binary_data);
    
            $header['filename']        = fread($zip, $data['filename_len']);
            $header['extra']           = ($data['extra_len'] != 0) ? fread($zip, $data['extra_len']) : '';
            $header['compression']     = $data['compression'];
            $header['size']            = $data['size'];
            $header['compressed_size'] = $data['compressed_size'];
            $header['crc']             = $data['crc'];
            $header['flag']            = $data['flag'];
            $header['mdate']           = $data['mdate'];
            $header['mtime']           = $data['mtime'];
    
            if($header['mdate'] && $header['mtime']){
                $hour    = ($header['mtime']  & 0xF800) >> 11;
                $minute  = ($header['mtime']  & 0x07E0) >> 5;
                $seconde = ($header['mtime']  & 0x001F) * 2;
                $year    = (($header['mdate'] & 0xFE00) >> 9) + 1980;
                $month   = ($header['mdate']  & 0x01E0) >> 5;
                $day     = $header['mdate']   & 0x001F;
                $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
            }else{
                $header['mtime'] = time();
            }
    
            $header['stored_filename'] = $header['filename'];
            $header['status']          = "ok";
            return $header;
        }
    
    
        private function ExtractFile($header, $to, $zip)
        {
            $header = $this->readfileheader($zip);
            
            if(substr($to, -1) != "/"){ $to .= "/"; }
            if(!@is_dir($to)){ @mkdir($to, 0777); }
            
            $pth = explode("/", dirname($header['filename']));
            for($i=0; isset($pth[$i]); $i++){
                if(!$pth[$i]){ continue; }
                $pthss .= $pth[$i]."/";
                if(!is_dir($to.$pthss)){ @mkdir($to.$pthss, 0777); }
            }
            
            if(!($header['external'] == 0x41FF0010) && !($header['external'] == 16))
            {
                if($header['compression'] == 0)
                {
                    $fp = @fopen($to.$header['filename'], 'wb');
                    if(!$fp){ return(-1); }
                    $size = $header['compressed_size'];
                    
                    while($size != 0)
                    {
                        $read_size   = ($size < 2048 ? $size : 2048);
                        $buffer      = fread($zip, $read_size);
                        $binary_data = pack('a'.$read_size, $buffer);
                        @fwrite($fp, $binary_data, $read_size);
                        $size       -= $read_size;
                    }
                    fclose($fp);
                    touch($to.$header['filename'], $header['mtime']);
                
                }else{
                    
                    $fp = @fopen($to.$header['filename'].'.gz', 'wb');
                    if(!$fp){ return(-1); }
                    $binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($header['compression']), Chr(0x00), time(), Chr(0x00), Chr(3));
                    
                    fwrite($fp, $binary_data, 10);
                    $size = $header['compressed_size'];
                    
                    while($size != 0)
                    {
                        $read_size   = ($size < 1024 ? $size : 1024);
                        $buffer      = fread($zip, $read_size);
                        $binary_data = pack('a'.$read_size, $buffer);
                        @fwrite($fp, $binary_data, $read_size);
                        $size       -= $read_size;
                    }
                    
                    $binary_data = pack('VV', $header['crc'], $header['size']);
                    fwrite($fp, $binary_data, 8);
                    fclose($fp);
                    
                    $gzp = @gzopen($to.$header['filename'].'.gz', 'rb') or die("Cette archive est compress!");
                    
                    if(!$gzp){ return(-2); }
                    $fp = @fopen($to.$header['filename'], 'wb');
                    if(!$fp){ return(-1); }
                    $size = $header['size'];
                    
                    while($size != 0)
                    {
                        $read_size   = ($size < 2048 ? $size : 2048);
                        $buffer      = gzread($gzp, $read_size);
                        $binary_data = pack('a'.$read_size, $buffer);
                        @fwrite($fp, $binary_data, $read_size);
                        $size       -= $read_size;
                    }
                    fclose($fp); gzclose($gzp);
                    
                    touch($to.$header['filename'], $header['mtime']);
                    @unlink($to.$header['filename'].'.gz');
                }
            }
            return true;
        }
        
        public function unZip($zipfile, $to, $index = Array(-1))
        {
            $ok  = 0;
            $zip = @fopen($zipfile, 'rb');
            if(!$zip){ return(-1); }
            
            $cdir      = $this->ReadCentralDir($zip, $zipfile);
            $pos_entry = $cdir['offset'];
            
            if(!is_array($index)){ $index = array($index); }
            for($i=0; $index[$i]; $i++)
            {
                if(intval($index[$i]) != $index[$i] || $index[$i] > $cdir['entries'])
                {
                    return(-1);
                }
            }
            
            for($i=0; $i<$cdir['entries']; $i++)
            {
                @fseek($zip, $pos_entry);
                $header          = $this->ReadCentralFileHeaders($zip);
                $header['index'] = $i;
                $pos_entry       = ftell($zip);
                @rewind($zip);
                fseek($zip, $header['offset']);
                if(in_array("-1", $index) || in_array($i, $index))
                {
                    $stat[$header['filename']] = $this->ExtractFile($header, $to, $zip);
                }
            }
            
            fclose($zip);
            return $stat;
        }
                      
        
        /**********************************************************
         * 其它部分
         **********************************************************/
        // ------------------------------------------------------ //
        // #获取被压缩文件的信息
        //
        // $archive = new PHPZip();
        // $array = $archive->GetZipInnerFilesInfo(ZIP压缩文件名);
        // for($i=0; $i<count($array); $i++) {
        //     printf("<b>·%s</b><br>\r\n", $array[$i][filename]);
        //     foreach($array[$i] as $key => $value)
        //         printf("%s => %s<br>\r\n", $key, $value);
        //     print "\r\n<p>------------------------------------<p>\r\n\r\n";
        // }
        // ------------------------------------------------------ //
        public function GetZipInnerFilesInfo($zipfile)
        {
            $zip = @fopen($zipfile, 'rb');
            if(!$zip){ return(0); }
            $centd = $this->ReadCentralDir($zip, $zipfile);
            
            @rewind($zip);
            @fseek($zip, $centd['offset']);
            $ret = array();

            for($i=0; $i<$centd['entries']; $i++)
            {
                $header          = $this->ReadCentralFileHeaders($zip);
                $header['index'] = $i;
                $info = array(
                    'filename'        => $header['filename'],                   // 文件名
                    'stored_filename' => $header['stored_filename'],            // 压缩后文件名
                    'size'            => $header['size'],                       // 大小
                    'compressed_size' => $header['compressed_size'],            // 压缩后大小
                    'crc'             => strtoupper(dechex($header['crc'])),    // CRC32
                    'mtime'           => date("Y-m-d H:i:s",$header['mtime']),  // 文件修改时间
                    'comment'         => $header['comment'],                    // 注释
                    'folder'          => ($header['external'] == 0x41FF0010 || $header['external'] == 16) ? 1 : 0,  // 是否为文件夹
                    'index'           => $header['index'],                      // 文件索引
                    'status'          => $header['status']                      // 状态
                );
                $ret[] = $info;
                unset($header);
            }
            fclose($zip);
            return $ret;
        }
        
    }
?>

php时间,日期计算 php时间, 日期计算
<?php
//output: 2010-1-2
//int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year]]]]]] )
echo $test = date( 'Y-m-d', mktime(0,0,0,12+1,1+1,2009))."<br>";
//明天
echo $tomorrow = date( 'Y-m-d', mktime(0,0,0,date('m') ,date('d')+1,date('Y')))."<br>";
//昨天
echo $yesterday = date( 'Y-m-d',mktime(0,0,0,date('m') ,date('d')-1,date('Y')))."<br>";
//上一个月
echo $lastmonth = date( 'Y-m-d', mktime(0,0,0,date('m')-1,date('d'), date('Y')))."<br>";
//下一年
echo $nextyear = date( 'Y-m-d', mktime(0,0,0,date('m'), date('d'), date('Y')+1))."<br>";
//明天
echo $tomorrow = date('Y-m-d',strtotime ('+1 day'))."<br>"; //明天
/*echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n"; */

//使用strtotime增加日期
echo $date1 = strtotime('2010-08-09')."<br>";
echo date('Y-m-d',strtotime("+5 day",$date1));
 //相应地,要增加月,年,将day改成month或year即可


?>
Global site tag (gtag.js) - Google Analytics