調和が溢れているこの時代、映画をダウンロードするのは簡単ではありません。そのため、2 台の 1T ハード ドライブに 600 本近くの映画が保存されているので、多くの同僚や友人がそれを知り、求め始めました。 . 映画をコピーするためにハードディスクを借りたので、問題が発生しました...
ハードドライブのロックがないため、誤って切断したり削除したりするなど、ハードドライブを「改ざん」するかどうかを制御できません。次のように、ムービーディレクトリを記録する特別なtxtファイルがありますが、
しかし、一つ一つ確認していくと時間の無駄になるだけでなく、疲れて読み逃してしまうことにもつながります。この場合、私の専門スキルを使って私のニーズを実現し、それを実行してみてはいかがでしょうか。
まず、txt ファイルからムービーディレクトリを読み取り、php 配列として保存する必要があります
$fp = fopen('D:movieList.txt','r');
for($i=0; $i
$arr[] = トリム(substr(fgets($fp),4));
}
fclose($fp);
このうち、562 は txt ファイルの行数です。ムービーごとに 1 行しか保存しないためです。ストレージ ディレクトリの最初の 4 文字は DVD、BD、MKV などのビデオ定義タイプであるため、substr(fgets($fp),4) を使用して最初の 4 文字を削除し、trim を使用して先頭と 4 文字を削除します。このように末尾のスペース。最終的に配列に格納された映画のタイトルには、他の文字は含まれません。
次に行うことは、モバイルハードディスク下のムービーディレクトリを読み取ることです。ここで私が探しているのは、オンラインでフォルダーの下にあるファイル名を読み取る機能です。
関数 myreaddir($dir){$handle = opendir($dir);
$i = 0;
While($file=readdir($handle)){
If(($file != ". ")&&($file != ".. ")){
$list[$i] = $file;
$i = $i+1;
}
}
Closedir($handle);
$list を返します;
}
$movie = myreaddir("I:映画");
この方法には、サブファイルの下にあるファイルを読み取ることができないという欠点がありますが、興味があれば、これをベースに拡張することができます。
次に、検証プロセスが始まります
foreach($arr as $v){
$f = false;
foreach($movie as $vv){
If(strstr($vv,$v)!=""){
$f = true;
}
}
もし(!$f){
echo $v."
}
}
検証の中心となる方法は、文字列 A に文字列 B が含まれているかどうか、つまり、ムービー ファイル名にムービー ディレクトリ内のタイトルが含まれているかどうかを判断することです。含まれていない場合は、それを出力します。
テストの結果、正解率は基本的に 80% ですが、バグがあります。たとえば、映画ディレクトリに「Chainsaw」という映画がありますが、フォルダーに「Chainsaw 1024*768.rmvb」がありません。 「「Chainsaw 1024*768.rmvb」というムービーがあるので、プログラムは通ります。
唯一の解決策は、ムービー ディレクトリを記録するときに完全なファイル名を記録することです。「チェーンソー」だけを記録するのではなく、「チェーンソー 1024*768」を記録するか、単にファイル形式を記録して、検証中に文字列の比較ができるようにします。直接実行されました。
より良い解決策があれば、ぜひ教えてください。
元のアドレス: http://www.cnblogs.com/hooray/archive/2011/10/30/2228990.html