php递归遍历目录实现程序

 更新时间:2016年11月25日 17:30  点击:2122
PHP本身自带的有一个readdir的函数,不过只能读取当前的目录,根据这个函数,我写了另外一个函数,用来实现我的需求。函数的原理很简单,主要就是用了一下递归调用。
 代码如下 复制代码

<?php
class listdir{
var $depth;
var $dirname;
var $list;
var $tostring;

function listdir($dir){
$this->dirname=$dir;
$this->depth=0;
$this->tostring=”";
}

//把结果保存进多维数组
function getlist($dir=”"){
if($dir==”")$dir=$this->dirname;
$d=@dir($dir);
while(false!==($item=$d->read()))
{
if($item!=”.”&&$item!=”..”)
{
$path=$dir.”/”.$item;
if(is_dir($path)){
$this->depth+=1;
$this->getlist($path);
}else{
$this->list[$this->depth][]=$item;
}
}
}
$this->list[$this->depth]['directory']=$dir;
$this->depth-=1;
$d->close();
return $this->list;
}

//字符窜化结果

function tostring($dir=”"){
if($dir==”")$dir=$this->dirname;
$d=@dir($dir);
$this->tostring.=”<UL>n”;
$this->tostring.=”Directory:”.$dir.”n”;
while(false!==($item=$d->read()))
{
if($item!=”.”&&$item!=”..”)
{
$path=$dir.”/”.$item;
if(is_dir($path)){
$this->depth+=1;
$this->tostring($path);
}else{
$this->tostring.=”<LI>”.$item.”</LI>n”;
}
}
}
$this->depth-=1;
$d->close();
$this->tostring.=”</UL>n”;
return $this->tostring;
}
}
$wapdir=”jquery”;
$d=new listdir($wapdir);
echo $d->tostring();
?>

递归创建多级目录

1.先判断最底层目录div/css/layout是否存在;2.判断div/css/layout的上层目录div/css是否存在,不存在则以div/css作为参数递归进行


下面是程序代码:

 代码如下 复制代码

function mkdirs($dir)
{
if(!is_dir($dir))
{
if(!mkdirs(dirname($dir))){
return false;
}
if(!mkdir($dir,0777)){
return false;
}
}
return true;
}
mkdirs('div/css/layout');


同样的思路,php用rmdir和unlink递归删除多级目录的代码:

function rmdirs($dir)
{
$d = dir($dir);
while (false !== ($child = $d->read())){
if($child != '.' && $child != '..'){
if(is_dir($dir.'/'.$child))
rmdirs($dir.'/'.$child);
else unlink($dir.'/'.$child);
}
}
$d->close();
rmdir($dir);
}

常用的php各种验证正则表达式程序
 代码如下 复制代码
class validator
 
{
 
    /**
 
     * Checks that a field is exactly the right length.
 
     * Constructer PHP4     
 
     */
 
    function validator()
 
    {
 
    }
 
    /**
 
     * check a number optional -,+,. values
 
     * @param   string        
 
     * @return  boolean
 
     */
 
    function is_numeric($val)
 
    {
 
        return (bool)preg_match('/^[-+]?[0-9]*.?[0-9]+$/', $val);
 
    }
 
    /**
 
     * valid email     
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_email($val)
 
    {
 
        return (bool)(preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/i",
 
            $val));
 
    }
 
    /**
 
     * Valid URL or web address
 
     * @param   string      
 
     * @return  boolean
 
     */
 
    function is_url($val)
 
    {
 
        return (bool)preg_match("^((((https?|ftps?|gopher|telnet|nntp)://)|(mailto:|news:))(%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@&=+$,A-Za-z0-9])+)([).!';/?:,][[:blank:]])?$",
 
            $val);
 
    }
 
    /**
 
     * Valid IP address
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_ipaddress($val)
 
    {
 
        return (bool)preg_match("/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/",
 
            $val);
 
    }
 
    /**
 
     * Matches only alpha letters
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_alpha($val)
 
    {
 
        return (bool)preg_match("/^([a-zA-Z])+$/i", $val);
 
    }
 
    /**
 
     * Matches alpha and numbers only
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_alphanumeric($val)
 
    {
 
        return (bool)preg_match("/^([a-zA-Z0-9])+$/i", $val);
 
    }
 
    /**
 
     * Matches alpha ,numbers,-,_ values
 
     * @param   string  
 
     * @return  boolean
 
     */
 
    function is_alphanumericdash($val)
 
    {
 
        return (bool)preg_match("/^([-a-zA-Z0-9_-])+$/i", $val);
 
    }
 
    /**
 
     * Matches alpha and dashes like -,_
 
     * @param   string  
 
     * @return  boolean
 
     */
 
    function is_alphadash($val)
 
    {
 
        return (bool)preg_match("/^([A-Za-z_-])+$/i", $val);
 
    }
 
    /**
 
     *Matches exactly number
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_integer($val)
 
    {
 
        return is_int($val);
 
    }
 
    /**
 
     * Valid Credit Card
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_creditcard($val)
 
    {
 
        return (bool)preg_match("/^((4d{3})|(5[1-5]d{2})|(6011)|(7d{3}))-?d{4}-?d{4}-?d{4}|3[4,7]d{13}$/",
 
            $val);
 
    }
 
    /**
 
     * check given string length is between given range 
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_rangelength($val, $min = '', $max = '')
 
    {
 
        return (strlen($val) >= $min and strlen($val) <= $max);
 
    }
 
    /**
 
     *Check the string length has minimum length
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_minlength($val, $min)
 
    {
 
        return (strlen($val) >= (int)$min);
 
    }
 
    /**
 
     * check string length exceeds maximum length     
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_maxlength($val, $max)
 
    {
 
        return (strlen($val) <= (int)$max);
 
    }
 
    /**
 
     * check given number exceeds max values   
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_maxvalue($number,$max)
 
    {
 
         return ($number >$max);
 
    }
 
    /**
 
     * check given number below value   
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_minvalue($number)
 
    {
 
        return ($number < $max);
 
    }
 
    /**
 
     * check given number between given values
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_rangevalue($number,$min,$max)
 
    {
 
        return ($number >$min and $number<$max);
 
    }
 
    /**
 
     * check for exactly length of string
 
     * @param   string  
 
     * @return  boolean
 
     */
 
    function is_length($val, $length)
 
    {
 
        return (strlen($val) == (int)$length);
 
    }
 
    /**
 
     * check decimal with . is optional and after decimal places up to 6th precision
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_decimal($val)
 
    {
 
        return (bool)preg_match("/^d+(.d{1,6})?$/'", $val);
 
    }
 
    /**
 
     * Valid hexadecimal color ,that may have #,
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_hexcolor($color)
 
    {
 
        return (bool)preg_match('/^#?+[0-9a-f]{3}(?:[0-9a-f]{3})?$/i', $color);
 
    }
 
    /**
 
     * Matches  againest given regular expression ,including delimeters
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_regex($val, $expression)
 
    {
 
        return (bool)preg_match($expression, (string )$val);
 
    }
 
    /**
 
     * compares two any kind of values ,stictly
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_matches($val, $value)
 
    {
 
        return ($val === $value);
 
    }
 
    /**
 
     * check if field empty string ,orject,array
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_empty($val)
 
    {
 
        return in_array($val, array(null, false, '', array()), true);
 
    }
 
    /**
 
     * Check if given string matches any format date
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_date($val)
 
    {
 
        return (strtotime($val) !== false);
 
    }
 
    /**
 
     * check given string againest given array values
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_enum($val, $arr)
 
    {
 
        return in_array($val, $arr);
 
    }
 
    /**
 
     * Checks that a field matches a v2 md5 string
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_md5($val)
 
    {
 
        return (bool)preg_match("/[0-9a-f]{32}/i", $val);
 
    }
 
    /**
 
     * Matches base64 enoding string
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_base64($val)
 
    {
 
        return (bool)!preg_match('/[^a-zA-Z0-9/+=]/', $val);
 
    }
 
    /**
 
     * check if array has unique elements,it must have  minimum one element
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_unique($arr)
 
    {
 
        $arr = (array )$arr;
 
        $count1 = count($arr);
 
        $count2 = count(array_unique($arr));
 
        return (count1 != 0 and (count1 == $count2));
 
    }
 
    /**
 
     * Check is rgb color value
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_rgb($val)
 
    {
 
        return (bool)preg_match("/^(rgb(s*b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])bs*,s*b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])bs*,s*b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])bs*))|(rgb(s*(d?d%|100%)+s*,s*(d?d%|100%)+s*,s*(d?d%|100%)+s*))$/",
 
            $val);
 
    }
 
    /**
 
     * is given field is boolean value or not
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_boolean($val)
 
    {
 
        $booleans = array(1, 0, '1', '0', true, false, true, false);
 
        $literals = array('true', 'false', 'yes', 'no');
 
        foreach ($booleans as $bool) {
 
            if ($val === $bool)
 
                return true;
 
        }
 
        return in_array(strtolower($val), $literals);
 
    } 
 
    /**
 
     * A token that don't have any white space
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_token($val)
 
    {
 
        return (bool)!preg_match('/s/', $val);
 
    }
 
    /**
 
     * Checks that a field is exactly the right length.
 
     * @param   string   value
 
     * @link  http://php.net/checkdnsrr  not added to Windows until PHP 5.3.0
 
     * @return  boolean
 
     */
 
    function is_emaildomain($email)
 
    {
 
        return (bool)checkdnsrr(preg_replace('/^[^@]++@/', '', $email), 'MX');
 
    }
 
    /**
 
     * Matches a phone number that length optional numbers 7,10,11
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_phone($number, $lengths = null)
 
    {
 
        if (!is_array($lengths)) {
 
            $lengths = array(7, 10, 11);
 
        }
 
        $number = preg_replace('/D+/', '', $number);
 
        return in_array(strlen($number), $lengths);
 
    }
 
    /**
 
     * check given sting is UTF8 
 
     * @param   string  
 
     * @return  boolean
 
     */
 
    function is_utf8($val)
 
    {
 
        return preg_match('%(?:
 
        [xC2-xDF][x80-xBF]        
 
        |xE0[xA0-xBF][x80-xBF]               
 
        |[xE1-xECxEExEF][x80-xBF]{2}     
 
        |xED[x80-x9F][x80-xBF]               
 
        |xF0[x90-xBF][x80-xBF]{2}   
 
        |[xF1-xF3][x80-xBF]{3}                  
 
        |xF4[x80-x8F][x80-xBF]{2}    
 
        )+%xs', $val);
 
    }
 
    /**
 
     * Given sting is lower cased
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_lower($val)
 
    {
 
        return (bool)preg_match("/^[a-z]+$/", $val);
 
    }
 
    /**
 
     * Given string is upper cased?
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_upper($val)
 
    {
 
        return (bool)preg_match("/^[A-Z]+$/", $val);
 
    }
 
    /**
 
     * Checks that given value matches following country pin codes.     
 
     * at = austria
 
     * au = australia
 
     * ca = canada
 
     * de = german
 
     * ee = estonia
 
     * nl = netherlands
 
     * it = italy
 
     * pt = portugal
 
     * se = sweden
 
     * uk = united kingdom
 
     * us = united states
 
     * @param String   
 
     * @param String
 
     * @return  boolean
 
     */
 
    function is_pincode($val, $country = 'us')
 
    {
 
        $patterns = array('at' => '^[0-9]{4,4}$', 'au' => '^[2-9][0-9]{2,3}$', 'ca' =>
 
            '^[a-zA-Z].[0-9].[a-zA-Z].s[0-9].[a-zA-Z].[0-9].', 'de' => '^[0-9]{5,5}$', 'ee' =>
 
            '^[0-9]{5,5}$', 'nl' => '^[0-9]{4,4}s[a-zA-Z]{2,2}$', 'it' => '^[0-9]{5,5}$',
 
            'pt' => '^[0-9]{4,4}-[0-9]{3,3}$', 'se' => '^[0-9]{3,3}s[0-9]{2,2}$', 'uk' =>
 
            '^([A-Z]{1,2}[0-9]{1}[0-9A-Z]{0,1}) ?([0-9]{1}[A-Z]{1,2})$', 'us' =>
 
            '^[0-9]{5,5}[-]{0,1}[0-9]{4,4}$');
 
        if (!array_key_exists($country, $patterns))
 
            return false;
 
        return (bool)preg_match("/" . $patterns[$country] . "/", $val);
 
    }
 
    /**
 
     * Check given url really exists?
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_urlexists($link)
 
    {
 
        if (!$this->is_url($link))
 
            return false;
 
        return (bool)@fsockopen($link, 80, $errno, $errstr, 30);
 
    }
 
    /**
 
     * Check given sting has script tags
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_jssafe($val)
 
    {
 
        return (bool)(!preg_match("/<script[^>]*>[srn]*(<!--)?|(-->)?[srn]*</script>/",
 
            $val));
 
    }
 
    /**
 
     * given sting has html tags?
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_htmlsafe($val)
 
    {
 
        return (bool)(!preg_match("/<(.*)>.*</$1>/", $val));
 
    }
 
    /**
 
     * check given sring has multilines 
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_multiline($val)
 
    {
 
        return (bool)preg_match("/[nrt]+/", $val);
 
    }
 
    /**
 
     * check given array key element exists?
 
     * @param   string   
 
     * @return  boolean
 
     */
 
    function is_exists($val, $arr)
 
    {
 
        return isset($arr[$val]);
 
    }
 
    /**
 
     * is given string is ascii format?
 
     * @param   string        
 
     * @return  boolean
 
     */
 
    function is_ascii($val)
 
    {
 
        return !preg_match('/[^x00-x7F]/i', $val);
 
    }
 
    /**
 
     * Checks given value again MAC address of the computer
 
     * @param   string   value      
 
     * @return  boolean
 
     */
 
    function is_macaddress($val)
 
    {
 
        return (bool)preg_match('/^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$/',
 
            $val);
 
    }
 
    /**
 
     * Checks given value matches us citizen social security number
 
     * @param   string         
 
     * @return  boolean
 
     */
 
    function is_usssn($val)
 
    {
 
        return (bool)preg_match("/^d{3}-d{2}-d{4}$/", $val);
 
    }
 
    /**
 
     * Checks given value matches date de
 
     * @param   string         
 
     * @return  boolean
 
     */
 
    function is_dateDE($date)
 
    {
 
        return (bool)preg_match("/^dd?.dd?.ddd?d?$/", $date);
 
    }
 
    /**
 
     * Checks given value matches us citizen social security number
 
     * @param   string         
 
     * @return  boolean
 
     */
 
    function is_dateISO($date)
 
    {
 
        return (bool)preg_match("/^d{4}[/-]d{1,2}[/-]d{1,2}$/", $date);
 
    }
 
    /**
 
     * Checks given value matches a time zone  
 
     * +00:00 | -05:00 
 
     * @param   string         
 
     * @return  boolean
 
     */
 
    function is_timezone($val)
 
    {
 
        return (bool)preg_match("/^[-+]((0[0-9]|1[0-3]):([03]0|45)|14:00)$/", $val);
 
    }
 
    /**
 
     * Time in 24 hours format with optional seconds
 
     * 12:15 | 10:26:59 | 22:01:15 
 
     * @param   string         
 
     * @return  boolean
 
     */
 
    function is_time24($val)
 
    {
 
        return (bool)preg_match("/^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/",
 
            $val);
 
    }
 
    /**
 
     * Time in 12 hours format with optional seconds
 
     * 08:00AM | 10:00am | 7:00pm
 
     * @param   string         
 
     * @return  boolean
 
     */
 
    function is_time12($val)
 
    {
 
        return (bool)preg_match("/^([1-9]|1[0-2]|0[1-9]){1}(:[0-5][0-9][aApP][mM]){1}$/",
 
            $val);
 
    }
 
}
 
下面我们给出一个PHP正则表达式匹配字符串中的指定标签实现程序代码,有需要学习的朋友可参考本教程。

在 PHP 应用中,正则表达式主要用于:

•正则匹配:根据正则表达式匹配相应的内容
•正则替换:根据正则表达式匹配内容并替换
•正则分割:根据正则表达式分割字符串

常用

preg_match_all()
preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。

语法:

int preg_match_all( string pattern, string subject, array matches [, int flags ] )


实例

$str = "之二宽阔的甘家口东#标签1#标签2 #标签3。#标签4,都发$1234 ¥xc,cvm , ¥12,dflksjf如何#标签5.x

 代码如下 复制代码
#tag6.cvxcv“";
preg_match_all('/#([a-zA-Z0-9x7f-xff]+)/', $str, $mat);
print_r($mat);
 
preg_match("/[x{00a5}x{ffe5}](d+)/u", $str, $mat);
print_r($mat);

正则匹配中文汉字根据页面编码不同而略有区别:

•GBK/GB2312编码:[x80-xff>]+ 或 [xa1-xff]+
•UTF-8编码:[x{4e00}-x{9fa5}]+/u
例子:

 代码如下 复制代码

<?php
$str = "学习php是一件快乐的事。";
preg_match_all("/[x80-xff]+/", $str, $match);
//UTF-8 使用:
//preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str, $match);
print_r($match);
?>

补充说明:

双字节字符编码范围

1. GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文 gb2312
x80-xff 中文 gbk

2. UTF-8 (Unicode)

u4e00-u9fa5 (中文)
x3130-x318F (韩文
xAC00-xD7A3 (韩文)
u0800-u4e00 (日文)

本文章以php date函数为主来详解的介绍php中时间日期的用法,有需要的朋友可参考本教程。

PHP的显示时间的代码比ASP还是强大多了,调用起来更加的简单。

先看

 代码如下 复制代码

//系统函数开始
$nbyear=Date('Y');
$nbmonth=Date('m');
$nbday=Date('d');
$date=Date('Y-m-d');
$datetime=Date('Y-m-d H:i:s');
$cndate=Date('Y年m月d日');
$cndateweek=Date('Y年m月d日');

下面我们来一一介绍

1、年-月-日
echo date('Y-m-j');
2007-02-6
echo date('y-n-j');
07-2-6
大写Y表示年四位数字,而小写y表示年的两位数字;
小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。

echo date('Y-M-j');
2007-Feb-6
echo date('Y-m-d');
2007-02-06
大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);
没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。
echo date('Y-M-j');
2007-Feb-6
echo date('Y-F-jS');
2007-February-6th
大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)
大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。

小结:
表示年可以用大写的Y和小写y;
表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);
表示日可以用小写d和小写j,大写S表示日期的后缀。

2、时:分:秒
默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。
echo date('g:i:s a');
5:56:57 am
echo date('h:i:s A');
05:56:57 AM
小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。
当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。

echo date('G:i:s');
14:02:26
大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数
小结:
字母g表示小时不带前导,字母h表示小时带前导;
小写g、h表示12小时制,大写G、H表示24小时制。

3、闰年、星期、天
echo date('L');
今年是否闰年:0

echo date('l');
今天是:Tuesday
echo date('D');
今天是:Tue
大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;
小写l表示当天是星期几的英文全写(Tuesday);
而使用大写D表示星期几的3个字符缩写(Tue)。

echo date('w');
今天星期:2
echo date('W');
本周是全年中的第 06 周
小写w表示星期几,数字形式表示
大写W表示一年中的星期数

echo date('t');
本月是 28 天
echo date('z');
今天是今年的第 36 天
小写t表示当前月份又多少天
小写z表示今天是本年中第几天

4、其他
echo date('T');
UTC
大写T表示服务器的时间区域设置

echo date('I');
0
大写I表示判断当前是否为夏令时,为真返回1,否则为0

echo date('U');
1170769424
大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。

echo date('c');
2007-02-06T14:24:43+00:00
小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。

echo date('r');
Tue, 06 Feb 2007 14:25:52 +0000
小写r表示RFC822日期

参数如下:
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
D - 星期几,三个英文字母; 如: "Fri"
F - 月份,英文全名; 如: "January"
h - 12 小时制的小时; 如: "01" 至 "12"
H - 24 小时制的小时; 如: "00" 至 "23"
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
i - 分钟; 如: "00" 至 "59"
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"
l - 星期几,英文全名; 如: "Friday"
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
M - 月份,三个英文字母; 如: "Jan"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
t - 指定月份的天数; 如: "28" 至 "31"
U - 总秒数
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
z - 一年中的第几天; 如: "0" 至 "365"
如果显示的时间与系统不一致,就要改PHP.ini配置文件。
系统默认是UTC时间
可以打开php.inc
设置   date.timezone = PRC

PHP显示本地化的日期和时间


 1、setlocale()函数
    setlocale()函数可以改变PHP默认的本地化环境。
    语法格式:setlocale(category locale)
    参数locale如果为空,就会使用系统环境变量的locale或lang的值,否则就会应用locale参数所指定的本地化环境。如en_US为美国本地化环境,chs为简体中文,cht为繁体中文。
    category参数选项说明如下:
    LC_ALL&mdash;—包含了下面所有的设置本地化规则
    LC_COLLATE——字符串比较
    LC_CTYPE——字符串分类和转换,如转换大小写
    LC_MONETARY——本地化环境的货币形式
    LC_NUMERIC——本地化环境的数值形式
    LC_TIME——本地化环境的时间形式

    2、strftime()函数
    strftime()函数——根据本地化环境来格式化输出日期和时间。
    语法格式:strftime(format timestamp)
    该函数返回用给定的字符串对参数timestamp进行格式化后输出的字符串。如果没有给出时间戳则用本地时间。
    format参数识别的转换标记:
%a – 当前区域星期几的简写
%A – 当前区域星期几的全称
%b – 当前区域月份的简写
%B – 当前区域月份的全称
%c – 当前区域首选的日期时间表达
%C – 世纪值(年份除以 100 后取整,范围从 00 到 99)
%d – 月份中的第几天,十进制数字(范围从 01 到 31)
%D – 和 %m/%d/%y 一样
%e – 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ‘ 1′ 到 ’31′)
%g – 和 %G 一样,但是没有世纪
%G – 4 位数的年份,符合 ISO 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。
%h – 和 %b 一样
%H – 24 小时制的十进制小时数(范围从 00 到 23)
%I – 12 小时制的十进制小时数(范围从 00 到 12)
%j – 年份中的第几天,十进制数(范围从 001 到 366)
%m – 十进制月份(范围从 01 到 12)
%M – 十进制分钟数
%n – 换行符
%p – 根据给定的时间值为 `am’ 或 `pm’,或者当前区域设置中的相应字符串
%r – 用 a.m. 和 p.m. 符号的时间
%R – 24 小时符号的时间
%S – 十进制秒数
%t – 制表符
%T – 当前时间,和 %H:%M:%S 一样
%u – 星期几的十进制数表达 [1,7],1 表示星期一
警告
尽管 ISO 9889:1999(当前的 C 标准)明确指出一周从星期一开始,但是 Sun Solaris 的一周似乎从星期天开始并作为 1。
%U – 本年的第几周,从第一周的第一个星期天作为第一天开始
%V – 本年第几周的 ISO 8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。)
%W – 本年的第几周数,从第一周的第一个星期一作为第一天开始
%w – 星期中的第几天,星期天为 0
%x – 当前区域首选的时间表示法,不包括时间
%X – 当前区域首选的时间表示法,不包括日期
%y – 没有世纪数的十进制年份(范围从 00 到 99)
%Y – 包括世纪数的十进制年份
%Z 或 %z – 时区名或缩写
%% – 文字上的 `%’ 字符

    实例:用不同方式输出本地化时间、日期

代码:

 代码如下 复制代码
<?php
setlocale(LC_ALL,”en_US”);
echo “美国格式:”.strftime(“Today is %A”);
echo “<p>”;
setlocale(LC_ALL,”chs”);
echo “中国格式:”.strftime(“今天是%A”);
echo “<p>”;
echo “简体中文的月份:”.strftime(“这个月是%B”);
?>

输出结果:

美国格式:Today is Thursday

中国格式:今天是星期四

简体中文的月份:这个月是十一月

在PHP编程过程中我们不得不考虑时间表达方式的不同,根据不同的地区用不同方式输出时间和日期。上面讲述的是“显示本地化日期和时间”,如何运用setlocale()函数和strftime()函数来设置本地化环境和格式化输出时间和日期。

本文章总结了关于php文件上传及错误代码的介绍,有需要学习的朋友可参考一下本文章。

上传操作代码

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title></title>
</head>
<body>
 
<?php
    if($_FILES['myfile']['error'] > 0) {      //判断文件是否可以成功上传到服务器,0表示上传成功
        echo 'Error: ';
 
        switch ( $_FILES['myfile']['error']  ) {
            case UPLOAD_ERR_OK:
                $response = 'There is no error, the file uploaded with success.';
                break;
            case UPLOAD_ERR_INI_SIZE:
                $response = 'The uploaded file exceeds the upload_max_filesize directive in php.ini.';
                break;
            case UPLOAD_ERR_FORM_SIZE:
                $response = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.';
                break;
            case UPLOAD_ERR_PARTIAL:
                $response = 'The uploaded file was only partially uploaded.';
                break;
            case UPLOAD_ERR_NO_FILE:
                $response = 'No file was uploaded.';
                break;
            case UPLOAD_ERR_NO_TMP_DIR:
                $response = 'Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.';
                break;
            case UPLOAD_ERR_CANT_WRITE:
                $response = 'Failed to write file to disk. Introduced in PHP 5.1.0.';
                break;
            case UPLOAD_ERR_EXTENSION:
                $response = 'File upload stopped by extension. Introduced in PHP 5.2.0.';
                break;
            default:
                $response = 'Unknown error';
                break;
        }
        echo $response;
         
         
        exit;       //如果$_FILES['myfile']['error']大于0都是有错误,输出错误信息并退出程序
    }
     
     //获取上传文件的MIME类型中的主类型和子类型
    list($maintype,$subtype)=explode("/",$_FILES['myfile']['type']);    
     
    if ($maintype=="text") {    //通过主类型限制不能上传文本文件,例如.txt .html .php等文件文件
     
        echo '问题: 不能上传文本文件。';
        exit;                //如果用户上传文本文件则退出程序
         
    }
 
    $upfile = './uploads/'.time().$_FILES['myfile']['name'];     //定义上传后的位置和新文件名
     
    if ( is_uploaded_file($_FILES['myfile']['tmp_name']) ) {     //判断是否为上传文件
     
        if ( !move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile) ) {   //从移动文件
            echo '问题: 不能将文件移动到指定目录。';
            exit;
        }
         
    }else{
         
        echo '问题: 上传文件不是一个合法文件: ';
        echo $_FILES['myfile']['name'];
        exit;
         
    }
 
    echo '文件 :  '.$upfile.'  上传成功, 大小为 : ' .$_FILES['myfile']['size'].'!<br>';   //如果文件上传成功则输出
?>
</body>
</html>

html

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
  <title></title>
</head>
<body>
  <form action="upload.php"  method="post" enctype="multipart/form-data">
          <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
          选择文件:<input type="file" name="myfile">
          <input type="submit" value="上传文件">
      </form>
</body>
</html>

一些常见的上传文件时错误代码

0 | UPLOAD_ERR_OK         | 文件成功上传
1 | UPLOAD_ERR_INI_SIZE   | Size exceeds upload_max_filesize in php.ini.
2 | UPLOAD_ERR_FORM_SIZE  | Size exceeds MAX_FILE_SIZE specified in HTML form.
3 | UPLOAD_ERR_PARTIAL    | 文件没有完整上传
4 | UPLOAD_ERR_NO_FILE    | 没有上传文件
5 | UPLOAD_ERROR_E        | As expliained by @Progman, removed in rev. 81792
6 | UPLOAD_ERR_NO_TMP_DIR | 找不到临时文件夹
7 | UPLOAD_ERR_CANT_WRITE | 磁盘不可写
8 | UPLOAD_ERR_EXTENSION  | File upload stopped by extension.

[!--infotagslink--]

相关文章

  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 解决Pycharm的项目目录突然消失的问题

    今天小编就为大家分享一篇解决Pycharm的项目目录突然消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • docker 启动elasticsearch镜像,挂载目录后报错的解决

    这篇文章主要介绍了docker 启动 elasticsearch镜像,挂载目录后报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-20
  • 微信小程序自定义tabbar组件

    这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • idea out目录与target目录的区别详解

    这篇文章主要介绍了idea out目录与target目录的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-08
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • Python爬取微信小程序通用方法代码实例详解

    这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29
  • C#获得程序的根目录以及判断文件是否存在的实例讲解

    今天小编大家分享一篇C#获得程序的根目录以及判断文件是否存在的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • 微信小程序手势操作之单触摸点与多触摸点

    这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
  • 微信小程序(应用号)开发新闻客户端实例

    这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25