程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 技術改變生活——電影目錄核對工具(php)

技術改變生活——電影目錄核對工具(php)

編輯:關於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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved