0

私はこれに関する提案を探しています:

約900行のmovies.txtというテキストファイルがあり、1行に1つの映画名が含まれています。ただし、PHPを使用して映画がリリースされた年を削除したいと思います(これは私が初めてです)

形式は基本的に次のとおりです。

A Nous la Liberte (1932)
About Schmidt (2002)
Absence of Malice (1981)
Adam's Rib (1949)
Adaptation (2002)
The Adjuster (1991)
The Adventures of Robin Hood (1938)
Affliction (1998)
The African Queen (1952)

そのため、テキストファイルを開き、1行ずつ読み取り、(YEAR)値を削除すると同時に、(YEAR)の前のスペースを削除する方法を探しています。

次に、newmovies.txtとして保存します

私のニーズに合った解決策を見せて説明していただければ幸いです。私はまだPHPに非常に慣れていないので(1週間前に開始)、それはすべて私にとってまだ魔法です。

4

2 に答える 2

6

関数を使用して、ファイルを行ごとに読み取ることができますfile()。次にforeach、開き括弧まで行を削除します。

例えば

foreach (file($fn) as $line) {
     $output[] = strtok($line, "(");
}

余分なスペースを削除して、改行を再度追加する必要がある場合があります。

したがって、正規表現はより単純であり、やみくもに物事を断ち切ることなく何らかの構造をアサートする可能性があります。

$text = file_get_contents($fn);
$text = preg_replace('/\s*\(\d+\)/m', '', $text);
     #  \s* is for spaces and \d+ is a placeholder for numbers

次に、それを保存します。

于 2012-10-12T15:06:15.583 に答える
1
<?php
$toWrite = "";
$handle = @fopen("input.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        $toWrite .= preg_replace('/\(\d+\)/', '', $buffer) . "\n";
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
    file_put_contents("input.txt", $toWrite);
}
?>
于 2012-10-12T15:09:49.670 に答える