技术改变生活——电影目录核对工具(php)

简介:

 在这个和谐泛滥的年代,想下载一部电影是如此的不容易,于是我就养成了收藏电影的习惯,2个1T的硬盘收藏了近600部片子,于是很多同事朋友知道后,纷纷向我借硬盘拷电影,于是问题也就来了……

  因为没有硬盘锁,所以我无法控制他们对硬盘是否“动手脚”,比如手误造成的剪切或者误删。虽然我有专门一个记录电影目录的txt文件,如下

  但要一个一个核对过去,不仅浪费时间,而且会造成疲劳导致漏看。既然如此,何不用自己的专业技能来实现我的需求呢,说干就干吧。

  首先我要把电影目录从txt文件里读取出来并存为php数组

$fp = fopen('D:\movieList.txt','r');
for($i=0; $i<562; $i++){
	$arr[] = trim(substr(fgets($fp),4));
}
fclose($fp);

  其中562是txt文件行数,因为一部电影我就存放一行。因为存放目录里头4个字符是影片清晰度类型,有DVD、BD和MKV三个,所以我用substr(fgets($fp),4)去掉头4个字符,然后用trim去掉首尾的空格,这样最终存放到数组里的片名就不包含任何其他字符了。

  然后要做的就是读取移动硬盘下的电影目录,这里我找的是一段网上读取文件夹下文件名的function

function myreaddir($dir){
	$handle = opendir($dir);
	$i = 0;
	while($file=readdir($handle)){
		if(($file != ". ")&&($file != ".. ")){
			$list[$i] = $file;
			$i = $i+1;
		}
	}
	closedir($handle);
	return $list;
}
$movie = myreaddir("I:\movies");

  这个方法有一个缺陷,就是不能读取子文件下的文件,不过对于我来说已经足够了,大家有兴趣可以在这基础上扩展下去。

  然后就是核对的过程

foreach($arr as $v){
	$f = false;
	foreach($movie as $vv){
		if(strstr($vv,$v)!=""){
			$f = true;
		}
	}
	if(!$f){
		echo $v."<br>";
	}
}

  核对的核心方法就是判断字符串A里是否包含字符串B,也就是电影文件名里是否包含电影目录里的片名,如果不包含,则输出。

  测试后正确率基本有80%,但有一个bug,比如我的电影目录里有部电影叫“电锯”,但是我文件夹里没有“电锯1024*768.rmvb”,而有部叫“电锯惊魂1024*768.rmvb”的,这样程序是判断通过的。

  唯一的解决办法就是在记录电影目录的时候,就把完整的文件名记录下来,不要只记录“电锯”,而应该记录“电锯1024*768”,或者干脆把文件格式也记录下来,这样在核对的时候,可以直接进行字符串比较。

  如果有更好的解决办法,欢迎告诉我。




    本文转自胡尐睿丶博客园博客,原文链接:http://www.cnblogs.com/hooray/archive/2011/10/30/2228990.html,如需转载请自行联系原作者

相关文章
|
7月前
|
设计模式 程序员 PHP
PHP程序员的技术成长之路
技术成长是每个PHP程序员不断追求的目标,而这一过程并非只是关于学习新的语言特性或框架,更多的是关乎思维方式和解决问题的能力。本文将探讨PHP程序员在技术成长之路上所面临的挑战,并提出一些建议,帮助他们不断提升自己的技术水平。
49 5
|
3月前
|
缓存 程序员 PHP
为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
【9月更文挑战第8天】Swoole 被视为 PHP 程序员技术水平的分水岭,因为它要求程序员深入理解底层原理(如网络编程、异步和并发模型),具备性能优化能力(如高效服务器开发、数据库连接池管理),拥有架构设计能力(如微服务架构、项目复杂度管理),并具备持续学习和自我提升意识。熟练掌握 Swoole 的程序员在技术能力和综合素质方面更具优势。
|
3月前
|
缓存 NoSQL PHP
使用PHP-redis实现键空间通知监听key失效事件的技术与代码示例
通过上述方法,你可以有效地在PHP中使用Redis来监听键空间通知,特别是针对键失效事件。这可以帮助你更好地管理缓存策略,及时响应键的变化。
98 3
|
5月前
|
设计模式 安全 关系型数据库
PHP开发涉及一系列步骤和技术
【7月更文挑战第2天】PHP开发涉及一系列步骤和技术
140 57
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
PHP编程中的面向对象基础利用AI技术提升文本分类效率
【8月更文挑战第28天】在PHP的编程世界中,面向对象编程(OOP)是一块基石,它不仅塑造了代码的结构,也影响了开发者的思考方式。本文将深入探讨PHP中面向对象的基础概念,通过浅显易懂的语言和生动的比喻,带领初学者步入这个充满魅力的世界。我们将一起探索类与对象的秘密,理解构造函数和析构函数的重要性,以及继承和多态性的魔法。准备好了吗?让我们开始这段激动人心的旅程!
|
3月前
|
缓存 网络协议 程序员
为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
【9月更文挑战第7天】Swoole 因其异步非阻塞编程模式、高性能服务器开发能力、性能优化工具及拓展技术视野等特点,被视为 PHP 程序员技术水平的分水岭。它要求程序员掌握异步编程、协程、网络协议等知识,并具备性能优化和系统管理能力,从而全面提升技术水平。
|
3月前
|
消息中间件 NoSQL Go
PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践
【9月更文挑战第7天】在从 PHP 的 ThinkPHP 框架迁移到 Go 的 Gin 框架时,涉及 Redis 延时消息队列的技术实践主要包括:理解延时消息队列概念,其能在特定时间处理消息,适用于定时任务等场景;在 ThinkPHP 中使用 Redis 实现延时队列;在 Gin 中结合 Go 的 Redis 客户端库实现类似功能;Go 具有更高性能和简洁性,适合处理大量消息。迁移过程中需考虑业务需求及系统稳定性。
|
4月前
|
安全 中间件 网络安全
深入浅出PHP框架之Laravel的优雅云计算与网络安全:探索云服务、网络安全和信息安全的技术领域
【8月更文挑战第29天】在编程的世界里,PHP以其灵活性和易用性广受欢迎。本文将深入探讨PHP的一个流行框架——Laravel,揭示它如何以简洁、高雅的解决方案满足复杂的开发需求。我们将一起走进Laravel的世界,探索其背后的哲学,以及它如何让代码变得更加动人和富有韵律。
|
4月前
|
SQL 安全 PHP
探寻PHP的现代演进之路:从Web开发到框架创新——揭秘PHP语言如何引领技术潮流
【8月更文挑战第2天】探索PHP的现代演进:从Web开发到框架创新
57 1
|
5月前
|
人工智能 API 语音技术
PHP对接百度语音识别技术
PHP对接百度语音识别技术
103 1