FILE2のFILE1にあるすべての行を削除します。file2に存在するfile1の行を削除してください。
私はこのコードを使用してみましたが、成功しませんでした:
機能:
function removeit($searchfor, $file) {
$file1 = fopen($file, "r") or exit("Unable to openfile!");
$t="";
while(!feof($file1)) {
$k= fgets($file1);
$pattern = preg_quote($searchfor, '/');
$pattern = "/^.*$pattern.*\$/m";
if (preg_match($pattern, $k))
{}
else {
$t=$t.$k;
}
}
fclose($file1);
$file = fopen($file, "w") or exit("Unable to open file!");
fwrite($file,$t);
fclose($file);
}
仕事をするコード:
$file = fopen("file1.txt", "r");
while(!feof($file)) {
$line = fgets($file);
# do same stuff with the $line
echo removeit(trim($line), 'file2.txt');
}
fclose($file);
をしてください任意のこのコードの修正?またはこの仕事を適切に行うための他の方法がありますか? 私は正しい結果を得るためにあらゆる種類のコードを試しましたが、私が試みたことはすべて成功しませんでした。
FILE2に存在するFILE1の行は、フルラインに含まれていません!ここで
例:
FILE1:
AAA
BBB
CCC
DDD
そして、ここでFILE2:
555AAAPPP // This line contain AAA line1 of FILE1 (To remove)
MMMBBBEEE // This contain BBB (To remove)
111CCC333 // This contain CCC (To remove)
DD15568 // This line will not be removed because not present on FILE1
そして、コードはそれのようなコード滞在を聞かせなければなりません前に、あったラインは取り除かなければなりません。
あなたの質問は私には不明である:あなたは '555AAAPPP'を削除するか、しないかをしたいですか? – Reversal
はい、3つのすべての行を削除する必要があり、それはFILE1 :) –
のErkの行が含まれているため、これを行うしないでください: '$ファイル=のfopenのを($ファイル、「W」)' - あなたはタイプを変更しています変数のその代わりに、文字列には '$ filename'、ハンドルに対しては' $ file'のようなものを使用してください。ややこしい。 –