php日期转中文程序代码

 更新时间:2016年11月25日 15:40  点击:1863
我们用到最多的日志肯定是数字型的日期了,但有时工作需要要把日期转换成中文要怎么处理?下面一起来看一个php日期转中文程序代码吧。

如果我们直接使用date函数获取日期显示的是数字的,如下

 代码如下 复制代码

<?php  
   echo   date("Y-m-d");  
?>

输出的

2014-10-11

那么我们如果想得到

二零一四年十月十一日

怎么处理呢,后来看到一个朋友写了一句话函数

 代码如下 复制代码

<?php
#php日期转中文
$str = '2014-10-11';
echo str_replace(str_split('0123456789'), str_split('零一二三四五六七八九',3), date('Y',strtotime($str)).'年'.trim(str_replace('1十','十',implode('十', str_split(date('n',strtotime($str))))),'0').'月'.trim(str_replace('1十','十',implode('十', str_split(date('d',strtotime($str))))),'0')).'日';
?>

输出结果:

二零一四年十月十一日

前面有讲过一个目录遍历的例子,这个例子有一点不一样他可以利用php目录遍历出来的目录或文件进行一个树型的展示效果。

遍历出来的效果如下

php+jquery实现无限级目录遍历展示代码

程序代码


index.php 里面的jquery文件大家可百度下载一个,因为这是用来实现一个效果的

 代码如下 复制代码

<script src="jquery/jquery-1.3.1.js" type="text/javascript"></script>
<style type="text/css">
body
{font: normal 12px arial, tahoma, helvetica, sans-serif;margin:0;background:#fff;padding:30px;}
*{ margin:0; padding:0;}
ul{ visibility:visible; cursor:pointer;}
.simpleTree li{font-size:14px; list-style: none;margin:0 0 0 50px;padding:0 0 0 34px;line-height: 18px;margin-left:-13px;background: url(jquery/images/expandable.gif) 0 -2px no-repeat #fff;}
.simpleTree li span{display:inline;clear: left;white-space: nowrap;}
li.root{padding:0 0 0 20px;line-height:20px;background: url(jquery/images/root.gif) 0 2px no-repeat #fff;}
li.file{padding:0 0 0 35px;line-height:20px;background: url(jquery/images/leaf-last.gif) 0 2px no-repeat #fff;}
</style>
<script type="text/javascript">
$(function(){

 $(".simpleTree").children("li").find("ul").hide();
$("span").click(function(){
 var $this_ul=$(this).siblings("ul");
 if($this_ul.is(":visible")){
$this_ul.stop(false,true).hide();

 }else{
$(this).siblings("ul").stop(false,true).show().end().stop(false,true).siblings("ul").find("ul").hide();
 }

})


})

</script>
<?php

include("function.php");

$path="目录/";//目录名
echo "<ul class='simpleTree'><li class='root'><span>目录</span>"; //目录名,和path 中名称一样
list_dir($path);

echo "</ul></li>";
?>

function.php 这个文件包含了遍历目录的函数了

 代码如下 复制代码

<?php
/*输出当前目录下的所有文件数量*/
function files_count($path,  & $i=0){
if($opendir=opendir($path)){
//===============
while($file=readdir($opendir) ){
if($file!="."&&$file!=".."){
 if(is_file($path."/".$file)){
  $i++;
 ;
 }else{

  files_count($path."/".$file, $i);
 }

 }

}

//=============
return  "(".$i.")";
}

}

//echo files_count("目录/目录1/3/");

//=============================//
/*遍历目录*/
function list_dir($path){
if($opendir=opendir($path)){


}
echo "<ul>";
while($file=readdir($opendir)){
 if($file!="."&&$file!=".."){

  if(is_dir($path."/".$file)){

 

$bar=scandir($path."/".$file);
unset($bar[0]);
unset($bar[1]);
if(count($bar!==0)){
 echo "<li><span>".$file.files_count($path."/".$file)."</span>";
 list_dir($path."/".$file);
}


  }else{

   echo "<li class='file'><a  href='".$path."/".$file."'>".$file."</a></li>";
  }

  }

 }
echo "</ul></li>";
}
?>

php中数组遍历方法有很多种,如有:for,foreach,while(),list(),each()这些函数与方法都要我们在数组遍历中会用到的,下面给大家介绍一下。

1. 使用for语句循环遍历数组

a. 其它语言(只有这一种方式)
b. PHP中这种方式不是我们首选方式
c. 数组必须是索引数组,而且下标还必须是连续的 索引数组下标还可以不连序,数组还有关联数组)

 代码如下 复制代码

< ?php
/*
* 我们想要在遍历的过程中改变以下数组中某些元素的值
*/
$people = Array(
Array(’name’ => ‘Kalle’, ’salt’ => 856412),
Array(’name’ => ‘Pierre’, ’salt’ => 215863)
);
for($i = 0; $i < sizeof($people); ++$i)
{
$people[$i]['salt'] = rand(000000, 999999);
}
?>

以上代码的问题,在于for的第二个表达式会导致代码执行很慢--因为每次循环时都要 计算一遍数组的长度。由于数组的长度始终不变,我们可以用一个中间变量来存储数组长度, 然后用这个变量作为for循环的第二个表达式。这样在循环的时候就可以直接使用该变量的值, 不用每次重新计算。 如下:

 代码如下 复制代码

< ?php
$people = Array(
Array(’name’ => ‘Kalle’, ’salt’ => 856412),
Array(’name’ => ‘Pierre’, ’salt’ => 215863)
);
for($i = 0, $size = sizeof($people); $i < $size; ++$i)
{
$people[$i]['salt'] = rand(000000, 999999);
}
?>

2. 使用foreach语句循环遍历数组

foreach(数组变量 as 变量值){
 循环体
}

a. 循环次数由数组的元素个数决定
b. 每一次循环都会将数组中的元素分别赋值给后面变量

foreach(数组变量 as 下标变量=> 值变量){

}

例子

 代码如下 复制代码

foreach遍历3维数组
 //foreach循环一个3维数组
/*
$biaoge=array(
"市场部"=>array(
array(1,"gaomou1","jingli11",4000),
array(2,"gaomou2","jingli22",4000),
array(3,"gaomou3","jingli33",4000)
 ),
"客服部"=>array(
array(1,"gao1","li11",4000),
array(2,"gao2","li22",4000),
array(3,"gao3","li33",4000)
),
"业务部"=>array(
 array(1,"mou1","jing11",4000),
 array(2,"mou2","jing22",4000),
 array(3,"mou3","jing33",4000)
)
 );
foreach($biaoge as $key=>$value){
echo '<table align="center" width="600" border="1">';
echo '<caption>联系表</caption>';
echo '<tr bgcolor="#dddddd">';
echo '<th>标号</th><th>名字</th><th>职位</th><th>工资</th></tr>';
foreach($value as $row){
if($row%2==0){
$bg="#ffffff";
 }else{
 $bg="#dddddd";
 }
 echo '<tr bgcolor='.$bg.'>';
 foreach($row as $col){
 echo '<td>'.$col.'</td>';
 }
 echo '</tr>';
}
echo '</table>';
 }
echo "<pre>";
print_r($biaoge);
echo "</pre>";

3. while() list() each() 组合循环遍历数组

each()函数,
 
a. 需要一个数组作为参数
b. 返回来的也是一个数组
c. 返回来的数组是0, 1, key, value四个下标(固定的)

0和key下标是当前参数数组元素的?

1和value下标是当前对数数组元素的值

d. 默认认当前元素就是第一个元素
e. 每执行一次后就会将当前元素向后移动
f. 如果到最后的元素再执行这个函数,则返回false

使用each遍历数组的示例代码如下:

 代码如下 复制代码
<?php
//使用each函数遍历数组
$arrGoogle=array('google','Gmail','Chrome','Android');
//第一次使用each取得当前键值对,并且将指针移到下一个位置
$arrG=each($arrGoogle);
//打印结果,并且换行以清晰显示结果
print_r($arrG);
print '<br>';
$arrGmail=each($arrGoogle);
print_r($arrGmail);
print '<br>';
$arrChrome=each($arrGoogle);
print_r($arrChrome);
print '<br>';
$arrAndroid=each($arrGoogle);
print_r($arrAndroid);
print '<br>';
//当指针位于数组末尾再次执行函数each,如果是这样再次执行结果返回false
$empty=each($arrGoogle);
//如果指针无法继续后移返回false
if($empty==false){
print '指针以位于数组末尾,无法在向后移,故返回false';
}
?>

注意:该函数的参数和返回值(在执行该函数前指针不位于数组末尾时)都为数组,在执行函数前数组指针位于数组末尾时再次执行该函数返回值为false
       开始的位置是第一个元素,每(正常)执行一次该函数,指针向后移到下一个地址 
list()函数

a. list()=array(); 需要将一个数组赋值给这个函数
b. 数组中的元素个数,要和list()函数中的参数个数相同
c. 数组中的每个元素值会赋值list()函数中的每个参数,list()将每个参数转为变量
d. list()只能接收索引数组
e. 按索引的下标的顺序

这不是真正的函数,而是PHP的语言结构。list()用一步操作给一组变量进赋值,即把数组中的值赋给一些变量。list()仅能用于数字索引的数组并假定数字索引从0开始。语法格式如下所示:

list(mixed varname,mixed ...)=array_expression             //list()语句的语法格式
list()语句和其它函数在使用上有很大的区别,并不是直接接收一个数组作为参数。而是通过“=”去处符以赋值的方式,将数组中每个元素的值,对应的赋给list()函数中的每个参数。list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量。使用方法如下 :

 代码如下 复制代码
<?php
$info=array('coffee','brown','caffeine');              //声明一个索引数组$info
 
list($drink,$color,$power)=$info;                      //将数组中的所有元素转为变量
echo "$drink is $color and $power makes it special.n";//输出的三个变量值是数组中三个元素的值
 
list($drink, ,$power)=$info;                           //将数组中的部分元素变为变量
echo "$drink has $power.n";                           //输出的两个变更值是数组中的前两个元素的值
 
list(,,$power)=$info;                                  //跳过前两个变量只将数组中第三个元素的值转为变量
echo "I need $power!n";                               //输出的一个变量值是数组中桃花汛三个元素的值勤
?>

通过上例了解list()函数的用法之后,将each()函数和list()函数结合起来使用。代码如下:

 代码如下 复制代码

<?php
$contact=array("ID"=>1,"姓名"=>"高某","公司"=>"A公司","地址"=>"北京市");
list($key,$value)=each($contact);           //将each()函数和list()函数联合使用
echo "$key=>$value";                        //输出变量$key和$value,中间使用"=>"分隔
?>

while() 函数

while()循环的语法格式如下:

 代码如下 复制代码
while( list($key,$value) = each(array_expressin) ){
       循环体;
}

使用这种组合改写前面使用foreach遍历过的一维数组。代码如下所示:

 代码如下 复制代码

<?php
 //声明一个一维的关联数组$contact
 $contact=array("ID"=>1,
  "姓名"=>"高某",
  "公司"=>"A公司",
  "地址"=>"北京市",
  "电话"=>"(010)987665432",
  "EMAIL"=>"gao@php.com"
 );
 //以HTML列表的方式输出数组中每个元素的信息
 echo '<dl>一个联系人信息:';
 while(list($key,$value) = each($contact) ){      //将foreach语句改写成while,list()和each()的组合
  echo "<dd>$key:$value</dd>";                 //输出每个元素的键/值勤
  }
 echo '</dl>';
?>

while() 遍历数据是需要结合list或each函数配置才可以遍历哦,否则 它单独是无法完成数组遍历的哦。

文章给大家介绍一个PHP自动批量生成会员卡号程序的例子,其实原理非常的简单我们将0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)分别代表数值0-35,如字母Z代表35。这样的话我要得到一个5位的编号,最大信息量就是36的5次方了,36^5 = 60466176,即最大的5位编号相当于10进制的数字:60466176

当我们要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号、10位的某证件号码、订单流水号、短网址等等,我们可以使用36进制计算出符合位数的不重复的编号。
查看演示DEMO
我们将0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)分别代表数值0-35,如字母Z代表35。这样的话我要得到一个5位的编号,最大信息量就是36的5次方了,36^5 = 60466176,即最大的5位编号相当于10进制的数字:60466176。
本文中为了做演示,我们假定某俱乐部发放一批10位的会员卡号,会员卡号由3位城市编号+5位卡号编码+2位校验码组成。城市编号用区号表示,如755代表深圳,5位卡编号则由36进制的卡编号组成,后面两位校验码则是通过一定的算法生成的,校验码的用处是可以验证卡号的合法性。这样的话,我们生成的10位卡号相当于最大能满足6000多万会员卡号,并且是不重复唯一的卡号。
PHP
我们使用PHP进行进制转换,10进制转36进制。
 

 代码如下 复制代码
class Code {
    //密码字典
    private $dic = array(
        0=>'0',    1=>'1', 2=>'2', 3=>'3', 4=>'4', 5=>'5', 6=>'6', 7=>'7', 8=>'8',    
        9=>'9', 10=>'A',  11=>'B', 12=>'C', 13=>'D', 14=>'E', 15=>'F',  16=>'G',  17=>'H',    
        18=>'I',19=>'J',  20=>'K', 21=>'L',  22=>'M',  23=>'N', 24=>'O', 25=>'P', 26=>'Q',    
    27=>'R',28=>'S',  29=>'T',  30=>'U', 31=>'V',  32=>'W',  33=>'X', 34=>'Y', 35=>'Z'
    );
 
 
    public function encodeID($int, $format=8) {
        $dics = $this->dic;
        $dnum = 36; //进制数
        $arr = array ();
        $loop = true;
        while ($loop) {
            $arr[] = $dics[bcmod($int, $dnum)];
            $int = bcdiv($int, $dnum, 0);
            if ($int == '0') {
                $loop = false;
            }
        }
        if (count($arr) < $format)
            $arr = array_pad($arr, $format, $dics[0]);
 
        return implode('', array_reverse($arr));
    }
 
    public function decodeID($ids) {
        $dics = $this->dic;
        $dnum = 36; //进制数
        //键值交换
        $dedic = array_flip($dics);
        //去零
        $id = ltrim($ids, $dics[0]);
        //反转
        $id = strrev($id);
        $v = 0;
        for ($i = 0, $j = strlen($id); $i < $j; $i++) {
            $v = bcadd(bcmul($dedic[$id {
                $i }
            ], bcpow($dnum, $i, 0), 0), $v, 0);
        }
        return $v;
    }
 
}
 


我们定义Code类,先定义密码字典,即0-Z分别对应的数值,方法encodeID($int, $format)中参数$int表示数字,$format表示位数长度,比方encodeID(123456789,5)表示将数字123456789转换成5位的36进制编号,而方法decodeID($ids)用于将36进制的编号转换成10进制的编号。
我们可以这样来生成卡号:

 代码如下 复制代码
 
$code = new Code();
$card_no = $code->encodeID(888888,5);

如上,我们就可以得到一个5位的卡编号,它实际代表着卡号是888888(6个8)的会员编号,而实际进行转换后是5位编号:0J1VC。
接着,我们将城市编号和校验码加上,城市编号是已经定义好的,校验码则通过一定的算法取得,本例中,我们使用简单的算法:将前三位城市编号和五位卡编号进行md5加密,然后取md5值的前2位作为校验码,这样就得到了编号后面的两位校验码。
 

 代码如下 复制代码
$card_pre = '755';
$card_vc = substr(md5($card_pre.$card_no),0,2);
$card_vc = strtoupper($card_vc);
echo $card_pre.$card_no.$card_vc;

实际应用中,可以通过数据库得到10进制的编号,保证编号唯一,再将上述代码组合,最终生成一个10位的不重复的会员卡号。

在使用php socket时我们需要先开启socket扩展了,我们可以使用phpinfo();查看是否开启了socket扩展,否则在php.ini中开启了,如果没有开启我们可以参考下面方法来设置

windows 系统中socket扩展

windows 下可以直接修改php.ini 文件 去掉extension=php_sockets.dll 前面的分号重启就OK了


在linux下给PHP安装socket扩展

 代码如下 复制代码

#cd /home/php5.2.1/ext/sockets
#/server/php/bin/phpize
#./configure --prefix=/usr/local/php/lib --with-php-config=/server/php/bin/php-config --enable-sockets
#make
#make install

再修改/usr/local/php/etc/php.ini文件
#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/" (php5.4版本以上不用加扩展路径)
extension=sockets.so

重启apache

好了都好了下面就开始吧

 代码如下 复制代码

//POST提交
function socketPost($url,$data){
$postStr = '';
$postLen = '';
$out = '';
//解析域
$urlInfo = parse_url($url);
$host = $urlInfo['host'];
if(!isset($urlInfo['query'])) $urlInfo['query'] ='';
$path = $urlInfo['path'].'?'.$urlInfo['query'];
//组织数据
foreach($data as $key=>$value){
$postStr .=$key.'='.rawurlencode($value).'&';#这里需要对post的值进行编码,否则会出现中断
}
$postStr = trim($postStr,"&");
 
$postLen = strlen($postStr);
$fp = fsockopen($host, 80, $errno, $errstr, 3);
if ($fp) {
  
$out .="POST ".$path." HTTP/1.0\r\n";
$out .="Host: ".$host."\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: ".$postLen."\r\n";   #这里最好加上Connection: close
$out .= "\r\n";
$out .= $postStr;
fwrite($fp, $out);
fclose($fp);

}

}

使用方法

 代码如下 复制代码

socketPost("提交的地址",array("username"=>"这里是post的username","password"=>321312312));

function socketGet($url){
$urlInfo = parse_url($url);
$host = $urlInfo['host'];
if(!isset($urlInfo['query'])) $urlInfo['query'] ='';
$path = $urlInfo['path'].'?'.$urlInfo['query'];
$fp = fsockopen($host, 80, $errno, $errstr, 3);
if ($fp) {
//调用模块进行抓取信息
$out = "GET {$path} / HTTP/1.1\r\n";
$out .= "Host: {$host}\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fclose($fp);

}
}

使用方法:socketGet("url");

工作需要封装好方法方便同事调用。

[!--infotagslink--]

相关文章

  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • C#读取中文文件出现乱码的解决方法

    这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • Mysql在debian系统中不能插入中文的终极解决方案

    在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
  • php计算两个日期相差天数的方法

    本文实例讲述了php计算两个日期相差天数的方法。...2015-03-15
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21