手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2009年07月29日的文章

php 使用glob遍历时的注意事项[原创]

PHP中使用glob递归是一个很方便的事情,如下:

PHP代码
  1. function read ( $dirname )  
  2. {  
  3.     static $dInfo;  
  4.     $dirname .= subStr$dirname, -1 ) == "/"  ? "" : "/";  
  5.     $dirInfo = glob$dirname . "*" );  
  6.     foreach ( $dirInfo as $info ){  
  7.         $dInfo[] = $info;  
  8.         if ( is_dir$info ) ){  
  9.             if ( !is_readable$info ) ){  
  10.                 chmod$info, 0777 );  
  11.             }  
  12.             read( $info );  
  13.         }  
  14.     }  
  15.     return $dInfo;  
  16. }  
当然用dir函数也可以:

PHP代码
  1. function read ( $dirname )  
  2. {  
  3.     static $dInfo;  
  4.     $d = dir( $dirname );  
  5.     if ( $d ){  
  6.         while ( false !== ($entry = $d->read() ) ){  
  7.             if$entry != '.' && $entry != '..' ){  
  8.                 $entry = $dirname . '/' . $entry ;  
  9.                 $dInfo[] = $entry ;  
  10.                 ifis_dir$entry )){  
  11.                     if ( !is_readable$entry ) ){  
  12.                         chmod$entry, 0777 );  
  13.                     }  
  14.                     //$timeInfo[] = filemtime( $entry );  
  15.                     read( $entry );  
  16.                 }  
  17.             }  
  18.         }  
  19.     }  
  20.     return $dInfo;  
  21. }  
嗯。看上去没有什么问题。但是有一个情况需要注意

在linux下面,目录名可以为".aa",最典型的例子就是svn目录,svn目录里大量的".svn"的目录,好象,在linux下面,这样以"."开头的目录,默认是隐藏目录,不显示的。

所以,在使用glob的时候,这样的目录是认不出来的。这点要千万注意

做个笔记。

Tags: glob

json2select的全国城市数据

怎么说呢,这个东西不太适合存储ID进数据库的用户,因为我在打开该文件后发现,里面的key全是t,s之类的,作者shawphy也建议换成j,s,q之类的key,但对于普通 用户来说太累了。

当然,这个数据应该是配合json2select插件而来的,所以我们不能奢求什么。
如果确实需要,到这里下载数据,然后自己通过程序生成json文件,修改一下json2select插件。当然更能做的就是问一下google,百度,谁有三级联动的代码。

原文如下:

去年写过一个小插件,json2select 一直想要转换出配套的数据,但总有这样那样的问题之后,终于拖到了现在。
好在一切悲剧的日子已经过去了,新时代已经来临。猛击这里
三级联动,直辖市精确到城镇街道,一般城市到达区。强烈推荐。

这一切都要感谢 Asfman ,辛勤的工作,当然也少不了感谢搜狐白社会,是他们提供了这么好的数据,也要感谢我们伟大祖国,我们中华民族地大物博,省市也很多……

这套数据有100K多一点,但可以想办法压缩
把其中重复字符串替换掉,把街道替换成j,市替换成s,区替换成q,都可以减少文件体积。要用的时候先用正则替换后,再eval执行字符串就能得到数据了,可以达到68K左右
另外,保存成gb2312的话也可以减小体积。目前我手头的是52K左右大小了。但可能导致乱码,慎用。

进一步,如果通过词频分析,找出重复最多的前20个,替换的话,相信可以把体积维持在30K以下了。但手头没工具,最近也很忙,所以大家自己发挥吧。
我粗略压缩后的东西我就不单独发布了。