美工统筹SEO,为企业电子商务营销助力!
php完成比拟两个文件夹异同的体例
一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-28 13:45:23 阅读数: 128
本文实例报告了php完成比拟两个文件夹异同的体例。分享给大师供大师参考。详细阐发以下:
请求:
只能利用号令行,比拟两个文件夹的差别,包含文件的差别。
思虑:
固然linux下有diff。。。。仍是用php吧,代码改的便利,速率也很快,以下解除了.svn目次的比拟 文件要比拟md5校验和
思绪:
1)把第一起径作为规范途径,列出第1个途径中有的,第2个途径中不的文件或文件夹,或是差别的文件。 2)而后,列出第2个途径中有的,第1个途径中却不存在的文件和文件夹。
挪用示例:
php compare_folder.php /home/temp/2 /home/temp/55
代码以下:
<?php /** * 东西文件 * 目标在于递归比拟两个文件夹 * * 挪用示例 * php compare_folder.php /home/temp/2 /home/temp/55 * */ //参数必定 if (count($argv) > 1 ) $dir1 = del_postfix($argv[1]); else $dir1 = "/"; if (count($argv) > 2 ) $dir2 = del_postfix($argv[2]); else $dir2 = "/"; //查抄第一个途径有,后者不或毛病的体例。 process_compare($dir1, $dir2, 0); echo "==========================================================="; //查抄第2个途径的过剩文件夹或文件 process_compare($dir2 , $dir1, 1); echo "all OK"; /** * 去除途径开端的/,并确保是相对途径 * * @param unknown_type $dir * @return unknown */ function del_postfix($dir) { if (!preg_match("#^/#", $dir)) { throw new Exception("参数必须是相对途径"); } $dir = preg_replace("#/$#", "", $dir); return $dir; } /** * 公用函数,会挪用一个递归体例完成比拟 * * @param string $dir1 作为规范的途径 * @param string $dir2 对照用的途径 * @param int $only_check_has 为1表现不比拟文件差别,为0表现还要比拟文件的md5校验和 */ function process_compare($dir1, $dir2, $only_check_has){ compare_file_folder($dir1, $dir1, $dir2, $only_check_has); } /** * 实在的函数,公有函数 * * @param string $dir1 途径1,是规范 * @param string $base_dir1 不变的参数途径2 * @param string $base_dir2 不变的待比拟的途径2 * @param int $only_check_has 为1表现不比拟文件差别,为0表现还要比拟文件的md5校验和 * */ function compare_file_folder($dir1, $base_dir1, $base_dir2, $only_check_has=0){ if (is_dir($dir1)) { $handle = dir($dir1); if ($dh = opendir($dir1)) { while ($entry = $handle->read()) { if (($entry != ".") && ($entry != "..") && ($entry != ".svn")){ $new = $dir1."/".$entry; //echo "compare: " . $new . ""; $other = preg_replace("#^". $base_dir1 ."#" , $base_dir2, $new); if(is_dir($new)) { //比拟 if (!is_dir($other)) { echo "!!not found direction: ". $other. " (" . $new .")"; } compare_file_folder($new, $base_dir1,$base_dir2, $only_check_has) ; } else { //若是1是文件,则2也应当是文件 if (!is_file($other)) { echo "!!not found file: ". $other. " (".$new .")"; }elseif ($only_check_has ==0 && ( md5_file($other) != md5_file($new) ) ){ echo "!!file md5 error: ". $other. " (".$new .")"; } } } } closedir($dh); } } } ?>
但愿本文所述对大师的php法式设想有所赞助。
上一篇: php中文考证码完成体例 | 下一篇:php判定两个日期之间相差几多个月份的体例