目录递归循环php代码

 更新时间:2016年11月25日 17:32  点击:1438
这是一款从代码和速度上还不错的php目录遍历代码,有需要的朋友可以参考一下。
 代码如下 复制代码

$path = '..';
function get_filetree($path){
$tree = array();
foreach(glob($path.'/*') as $single){
if(is_dir($single)){
$tree = array_merge($tree,get_filetree($single));
}
else{
$tree[] = $single;
}
}
return $tree;
}
print_r(get_filetree($path));
在递归扫描文件夹树的问题上,还是 Glob 函数的表现好一点,很准确的说。 > Scandir 函数会莫名其妙扫描两次 ../ 处的文件,也就是说如果小邪有俩文件。


> ../b.php教程 和 ../a.php,结果就会在扫描报告上面出现两次,很是奇怪。

 

 代码如下 复制代码

//Update at 2010.07.25 - 以下代码作废
$path = '..';
function get_filetree_scandir($path){
$tree = array();
foreach(scandir($path) as $single){
if(is_dir('../'.$single)){
$tree = array_merge($tree,get_filetree($single));
}
else{
$tree[] = '../'.$single;
}
}
return $tree;
}
print_r(get_filetree_scandir($path));

//Update at 2010.07.25 - 以下为新代码
$path = './';
function get_filetree_scandir($path){
$result = array();
$temp = array();
if (!is_dir($path)||!is_readable($path)) return null; //检测目录有效性
$allfiles = scandir($path); //获取目录下所有文件与文件夹
foreach ($allfiles as $filename) { //遍历一遍目录下的文件与文件夹
if (in_array($filename,array('.','..'))) continue; //无视 . 与 ..
$fullname = $path.'/'.$filename; //得到完整文件路径
if (is_dir($fullname)) { //是目录的话继续递归
$result[$filename] = get_filetree_scandir($fullname); //递归开始
}
else {
$temp[] = $filename; //如果是文件,就存入数组
}
}
foreach ($temp as $tmp) { //把临时数组的内容存入保存结果的数组
$result[] = $tmp; //这样可以让文件夹排前面,文件在后面
}
return $result;
}
print_r(get_filetree_scandir($path));

一款联动菜单,利用了js php mysql实现的无刷新效果,有需要的朋友可以直接下载哦。
 代码如下 复制代码

<script language="JavaScript" type="text/网页特效">
function removeOptions(selectObj){    
          if (typeof selectObj != 'object'){
            selectObj = document.getElementById(selectObj);
    }      // 原有选项计数    
          var len = selectObj.options.length;    
    for (var i=0; i < len; i++){         // 移除当前选项        
        selectObj.options[0] = null;    
    }
}
function setSelectOption(selectObj, optionList, firstOption, selected) {   
     if (typeof selectObj != 'object'){        
      selectObj = document.getElementById(selectObj);
  }      // 清空选项    
  removeOptions(selectObj);      // 选项计数    
  var start = 0;          // 如果需要添加第一个选项    
  if (firstOption){        
       selectObj.options[0] = new Option(firstOption, '');          // 选项计数从 1 开始        
    start ++;   
  }     
  var len = optionList.length;
  for (var i=0; i < len; i++){         // 设置 option        
      selectObj.options[start] = new Option(optionList[i].txt, optionList[i].val);          // 选中项        
   if(selected == optionList[i].val){            
       selectObj.options[start].selected = true;        
   }          // 计数加 1        
  start ++;    
 } 
}  //-->
 var sidArr = [];


 <?PHP

 

$sql="select * from ptypes where sid = 0 and ssid =0";
$result=mysql教程_query($sql,$conn) or die("查询数据库教程出错1");
while($row=mysql_fetch_object($result))
{
   $i=0;
   $rs2="";
   $sql2="select * from ptypes where sid='".$row->id."'";
   $result2=mysql_query($sql2,$conn) or die("查询数据出错2");
   while($row2=mysql_fetch_object($result2))
   {
       if ($i==0){
        $t="";
    }else{
        $t=",";
    }
       $rs2.=$t."{txt:'".$row2->title."',val:'".$row2->id."'}n";
    $n=0;
    $rs3="";
    $sql3="select * from ptypes where ssid='".$row2->id."'";
    $result3=mysql_query($sql3,$conn) or die("查询是数据库出错3");
    while($row3=mysql_fetch_object($result3))
    {
       if ($n==0)
    {
       $t1="";
    }else{
       $t1=",";
    }
    $rs3.=$t1."{txt:'".$row3->title."',val:'".$row3->id."'}n";
    $n=1;
    }
   
    echo("sidArr['".$row2->id."']=[".$rs3."];");
    $i=1;
   }
  
   echo("sidArr['".$row->id."']=[".$rs2."];");
}
?>
function setCity(province) {
       
         removeOptions(document.getElementById('sid'));
   removeOptions(document.getElementById('ssid'));
   setSelectOption('sid', "", '-请选择-');
   setSelectOption('ssid', "", '-请选择-');
         if (!sidArr[province] || sidArr[province]==""){
      
             document.getElementById('sid').disabled=true;
    document.getElementById('ssid').disabled=true;
   }else{
       document.getElementById('sid').disabled=false;
    document.getElementById('ssid').disabled=false;
             setSelectOption('sid', sidArr[province], '-请选择-');
   }
}
function setssid(province) {
         removeOptions(document.getElementById('ssid'));
   setSelectOption('ssid', "", '-请选择-');
         if (!sidArr[province] || sidArr[province]==""){
    document.getElementById('ssid').disabled=true;
   }else{
       document.getElementById('ssid').disabled=false;
             setSelectOption('ssid', sidArr[province], '-请选择-');
   }
}
</script>

<select name="province" id="province" onchange="if(this.value != '') setCity(this.options[this.selectedIndex].value);">  
   <option value="">-请选择-</option>
   <?php教程
   $sql="select * from ptypes where sid=0 and ssid = 0";
   $result=mysql_query($sql,$conn) or die("返回数据记录出错!");
   while($row=mysql_fetch_object($result))
   {
       echo ("<option value='".$row->id."'>".$row->title."</option>");
   }
   ?>
</select> 一级
  
<select name="sid" id="sid" onchange="if(this.value != '') setssid(this.options[this.selectedIndex].value);" >    
<option value="">-请选择-</option>
</select> 二级

<select name="ssid" id="ssid">    
<option value="">-请选择-</option>
</select> 三级

上传原理很简单就是利用表单的打开方式为iframe的id名,这样就可以在当前页面的iframe打来了,实现文件上传,再利用js返回上传结果。

<html>
<head>
<title>无刷新上传文件</title>
<meta Content-type="text/html" charset="utf-8" />
<script type="text/网页特效">
function startUpload() {
document.getElementById('processing').innerHTML = 'loding...';
return true;
}
function stopUpload(rel){
var msg;
switch (rel) {
case 0:
msg = "上传成功";
break;
case 1:
msg = "上传的文件超过限制";
break;
case 2:
msg = "只能上传图片文件";
break;
default:
msg = "上传文件失败";
}
document.getElementById('processing').innerHTML = msg;
}
</script>
</head>
<body>
<div style="text-align:center">
<div id="processing"></div>
<form action="upload.php教程" method="post" enctype="multipart/form-data" target="form-target" onsubmit="startUpload();">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input type="file" name="myfile" />
<input type="submit" name="sub" value="upload" />
</form>
<iframe style="width:0; height:0; border:0;" name="form-target"></iframe>
</div>
</body>
</html>

php代码

<?php
sleep(2);
$fileTypes = array('jpg','png','gif','bmp');
$result = null;
$uploadDir = './upfiles';
$maxSize = 1 * pow(2,20);
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['sub'])) {
$myfile = $_FILES['myfile'];
$myfileType = substr($myfile['name'], strrpos($myfile['name'], ".") + 1);
if ($myfile['size'] > $maxSize) {
$result = 1;
} else if (!in_array($myfileType, $fileTypes)) {
$result = 2;
} elseif (is_uploaded_file($myfile['tmp_name'])) {
$toFile = $uploadDir . '/' . $myfile['name'];
if (@move_uploaded_file($myfile['tmp_name'], $toFile)) {
$result = 0;
} else {
$result = -1;
}
} else {
$result = 1;
}
}
?>
<script type="text/javascript">
window.top.window.stopUpload(<?php echo $result; ?>);
</script>

里面有各种大家开发中常用到的种编码如uft8->gbk gbk转utf8 繁体转简体 简体转繁体 utf8转unicode gbk转拼音 Ascii转拼音 等

里面有各种大家开发中常用到的种编码如uft8->gbk  gbk转utf8 繁体转简体  简体转繁体 utf8转unicode  gbk转拼音 Ascii转拼音 等

<?php教程
/**
 * utf8转gbk
 * @param $utfstr
 */
function utf8_to_gbk($utfstr) {
 global $UC2GBTABLE;
 $okstr = '';
 if(empty($UC2GBTABLE)) {
  $filename = CODETABLEDIR.'gb-unicode.table';
  $fp = fopen($filename, 'rb');
  while($l = fgets($fp,15)) {       
   $UC2GBTABLE[hexdec(substr($l, 7, 6))] = hexdec(substr($l, 0, 6));
  }
  fclose($fp);
 }
 $okstr = '';
 $ulen = strlen($utfstr);
 for($i=0; $i<$ulen; $i++) {
  $c = $utfstr[$i];
  $cb = decbin(ord($utfstr[$i]));
  if(strlen($cb)==8) {
   $csize = strpos(decbin(ord($cb)),'0');
   for($j = 0; $j < $csize; $j++) {
    $i++;
    $c .= $utfstr[$i];
   }
   $c = utf8_to_unicode($c);
   if(isset($UC2GBTABLE[$c])) {
    $c = dechex($UC2GBTABLE[$c]+0x8080);
    $okstr .= chr(hexdec($c[0].$c[1])).chr(hexdec($c[2].$c[3]));
   } else {
    $okstr .= '&#'.$c.';';
   }
  } else {
   $okstr .= $c;
  }
 }
 $okstr = trim($okstr);
 return $okstr;
}
/**
 * gbk转utf8
 * @param $gbstr
 */
function gbk_to_utf8($gbstr) {
 global $CODETABLE;
 if(empty($CODETABLE)) {
  $filename = CODETABLEDIR.'gb-unicode.table';
  $fp = fopen($filename, 'rb');
  while($l = fgets($fp,15)) {
   $CODETABLE[hexdec(substr($l, 0, 6))] = substr($l, 7, 6);
  }
  fclose($fp);
 }
 $ret = '';
 $utf8 = '';
 while($gbstr) {
  if(ord(substr($gbstr, 0, 1)) > 0x80) {
   $thisW = substr($gbstr, 0, 2);
   $gbstr = substr($gbstr, 2, strlen($gbstr));
   $utf8 = '';
   @$utf8 = unicode_to_utf8(hexdec($CODETABLE[hexdec(bin2hex($thisW)) - 0x8080]));
   if($utf8 != '') {
    for($i = 0; $i < strlen($utf8); $i += 3) $ret .= chr(substr($utf8, $i, 3));
   }
  } else {
   $ret .= substr($gbstr, 0, 1);
   $gbstr = substr($gbstr, 1, strlen($gbstr));
  }
 }
 return $ret;
}
/**
 * 繁体转简体
 * @param  $Text
 */
function big5_to_gbk($Text) {
 global $BIG5_DATA;
 if(empty($BIG5_DATA)) {
  $filename = CODETABLEDIR.'big5-gb.table';
  $fp = fopen($filename, 'rb');
  $BIG5_DATA = fread($fp, filesize($filename));
  fclose($fp);
 }
 $max = strlen($Text)-1;
 for($i = 0; $i < $max; $i++) {
  $h = ord($Text[$i]);
  if($h >= 0x80) {
   $l = ord($Text[$i+1]);
   if($h==161 && $l==64) {
    $gbstr = ' ';
   } else {
    $p = ($h-160)*510+($l-1)*2;
    $gbstr = $BIG5_DATA[$p].$BIG5_DATA[$p+1];
   }
   $Text[$i] = $gbstr[0];
   $Text[$i+1] = $gbstr[1];
   $i++;
  }
 }
 return $Text;
}
/**
 * 简体转繁体
 * @param  $Text
 */
function gbk_to_big5($Text) {
 global $GB_DATA;
 if(empty($GB_DATA)) {
  $filename = CODETABLEDIR.'gb-big5.table';
  $fp = fopen($filename, 'rb');
  $gb = fread($fp, filesize($filename));
  fclose($fp);
 }
 $max = strlen($Text)-1;
 for($i = 0; $i < $max; $i++) {
  $h = ord($Text[$i]);
  if($h >= 0x80) {
   $l = ord($Text[$i+1]);
   if($h==161 && $l==64) {
    $big = ' ';
   } else {
    $p = ($h-160)*510+($l-1)*2;
    $big = $GB_DATA[$p].$GB_DATA[$p+1];
   }
   $Text[$i] = $big[0];
   $Text[$i+1] = $big[1];
   $i++;
  }
 }
 return $Text;
}
/**
 * unicode转utf8
 * @param  $c
 */
function unicode_to_utf8($c) {
 $str = '';
 if($c < 0x80) {
  $str .= $c;
 } elseif($c < 0x800) {
  $str .= (0xC0 | $c >> 6);
  $str .= (0x80 | $c & 0x3F);
 } elseif($c < 0x10000) {
  $str .= (0xE0 | $c >> 12);
  $str .= (0x80 | $c >> 6 & 0x3F);
  $str .= (0x80 | $c & 0x3F);
 } elseif($c < 0x200000) {
  $str .= (0xF0 | $c >> 18);
  $str .= (0x80 | $c >> 12 & 0x3F);
  $str .= (0x80 | $c >> 6 & 0x3F);
  $str .= (0x80 | $c & 0x3F);
 }
 return $str;
}
/**
 * utf8转unicode
 * @param  $c
 */
function utf8_to_unicode($c) {
 switch(strlen($c)) {
  case 1:
    return ord($c);
  case 2:
    $n = (ord($c[0]) & 0x3f) << 6;
    $n += ord($c[1]) & 0x3f;
    return $n;
  case 3:
    $n = (ord($c[0]) & 0x1f) << 12;
    $n += (ord($c[1]) & 0x3f) << 6;
    $n += ord($c[2]) & 0x3f;
    return $n;
  case 4:
    $n = (ord($c[0]) & 0x0f) << 18;
    $n += (ord($c[1]) & 0x3f) << 12;
    $n += (ord($c[2]) & 0x3f) << 6;
    $n += ord($c[3]) & 0x3f;
    return $n;
 }
}

/**
 * Ascii转拼音
 * @param $asc
 * @param $pyarr
 */
function asc_to_pinyin($asc,&$pyarr) {
 if($asc < 128)return chr($asc);
 elseif(isset($pyarr[$asc]))return $pyarr[$asc];
 else {
  foreach($pyarr as $id => $p) {
   if($id >= $asc)return $p;
  }
 }
}
/**
 * gbk转拼音
 * @param $txt
 */
function gbk_to_pinyin($txt) {
 if(CHARSET != 'gbk') {
  $txt = iconv(CHARSET,'GBK',$txt);
 } 
 $l = strlen($txt);
 $i = 0;
 $pyarr = array();
 $py = array();
 $filename = CODETABLEDIR.'gb-pinyin.table';
 $fp = fopen($filename,'r');
 while(!feof($fp)) {
  $p = explode("-",fgets($fp,32));
  $pyarr[intval($p[1])] = trim($p[0]);
 }
 fclose($fp);
 ksort($pyarr);
 while($i<$l) {
  $tmp = ord($txt[$i]);
  if($tmp>=128) {
   $asc = abs($tmp*256+ord($txt[$i+1])-65536);
   $i = $i+1;
  } else $asc = $tmp;
  $py[] = asc_to_pinyin($asc,$pyarr);
  $i++;
 }
 return $py;
}
?>

[!--infotagslink--]

相关文章

  • 解决Pycharm的项目目录突然消失的问题

    今天小编就为大家分享一篇解决Pycharm的项目目录突然消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   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
  • JS实现双击屏幕滚动效果代码

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

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 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
  • PHP开发微信支付的代码分享

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

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

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • docker 启动elasticsearch镜像,挂载目录后报错的解决

    这篇文章主要介绍了docker 启动 elasticsearch镜像,挂载目录后报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-20
  • php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25