0

重複の可能性:
CSV ファイルから行を削除

このように構成されたファイルがあります

numbers1;numbers;numbers;\n
numbers2;numbers;numbers;\n
numbers3 to delete;numbers;numbers;\n
numbers4;numbers;numbers;\n

「削除するnumbers3」を含む行を削除したい場合(ファイルを作成する:

numbers1;numbers;numbers;\n
numbers2;numbers;numbers;\n
numbers4;numbers;numbers;\n

) どうすれば fwrite を使用できますか?

「行を削除」機能が見つからなかったので、\nまで文字数を数えようと思ったのですが、それでも「この文字数だけ削除」する方法が見つかりませんでした。

「デル」の文字はありますか?

4

2 に答える 2

1

これを試して-

$filename = "filename.txt";
$handle = @fopen($filename, "r");
if ($handle) {
    while (($buffer = fgets($handle, 1096)) !== false) {
        if(!stripos($buffer, "numbers3 to delete")
            $somecontent .= $buffer;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}

if (is_writable($filename)) {

    if (!$handle = fopen($filename, 'W+')) {
         echo "Cannot open file ($filename)";
         exit;
    }

    if (fwrite($handle, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote ($somecontent) to file ($filename)";

    fclose($handle);

} else {
    echo "The file $filename is not writable";
}
于 2012-12-26T12:18:33.250 に答える
0

Suresh のおかげで、私はこれで終わりました (stripos の部分で、必要に応じて !== を追加しました)

$eliminabile="numbers3 to delete;";

$handle = fopen("file.to.edit", "r");
if ($handle) {
    while (($buffer = fgets($handle)) !== false) {
        if(stripos($buffer, $eliminabile)!== 0)
        {
            $occorrenza .= $buffer;
        }
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}

if (is_writable("file.to.edit")) {

    if (!$handle = fopen("file.to.edit", "w+")) {
         echo "Cannot open file";
         exit;
    }

    if (fwrite($handle, $occorrenza) === FALSE) {
        echo "Cannot write to file";
        exit;
    }

    echo "Success, wrote ($occorrenza) to file)";

    fclose($handle);

} else {
    echo "The file is not writable";
}


?>
于 2012-12-26T14:46:48.217 に答える