Home > Article > Backend Development > Technology changes life - movie directory verification tool (php)_PHP tutorial
In this era of overflowing harmony, it is not easy to download a movie, so I developed the habit of collecting movies. Two 1T hard drives have a collection of nearly 600 movies. After knowing this, many colleagues and friends started asking for help. I borrowed the hard drive to copy the movie, so the problem came...
Because there is no hard drive lock, I can't control whether they "tamper with" the hard drive, such as cutting or deleting by mistake. Although I have a special txt file that records the movie directory, as follows
But checking them one by one not only wastes time, but also causes fatigue and leads to missed readings. In this case, why not use my professional skills to realize my needs and just do it.
First, I need to read the movie directory from the txt file and save it as a php array
$fp = fopen('D:movieList.txt','r');
for($i=0; $i<562; $i++){
$arr[] = trim(substr(fgets($fp),4));
}
fclose($fp);
Among them, 562 is the number of lines in the txt file, because I only store one line for each movie. Because the first 4 characters in the storage directory are the video definition types, including DVD, BD and MKV, I use substr(fgets($fp),4) to remove the first 4 characters, and then use trim to remove the leading and trailing spaces, like this The film title finally stored in the array does not contain any other characters.
The next thing to do is to read the movie directory under the mobile hard disk. What I am looking for here is a function that reads the file name under the folder online
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");
This method has a flaw, that is, it cannot read files under sub-files, but it is enough for me. If you are interested, you can expand on this basis.
Then comes the verification process
foreach($arr as $v){
$f = false;
foreach($movie as $vv){
If(strstr($vv,$v)!=""){
$f = true;
}
}
If(!$f){
echo $v."
";
}
}
The core method of verification is to determine whether string A contains string B, that is, whether the movie file name contains the title in the movie directory. If it does not, output it.
After testing, the accuracy rate is basically 80%, but there is a bug. For example, there is a movie called "Chainsaw" in my movie directory, but there is no "Chainsaw 1024*768.rmvb" in my folder, and there is a movie called " "Chainsaw 1024*768.rmvb", the program will pass.
The only solution is to record the complete file name when recording the movie directory. Don't just record "Chainsaw", but record "Chainsaw 1024*768", or simply record the file format, so that During verification, string comparison can be performed directly.
If there is a better solution, please let me know.
Original address: http://www.cnblogs.com/hooray/archive/2011/10/30/2228990.html