0

我正在寻找关于此的建议:

我有一个名为 movies.txt 的文本文件,它大约有 900 行,其中每行包含一个电影名称。但是,我想删除使用 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)

所以我正在寻找一种打开文本文件的方法,逐行读取并删除(YEAR)值,同时删除(YEAR)之前的空格。

然后我想将它保存为 newmovies.txt

如果您能向我展示和解释一个适合我需求的解决方案,那就太好了。我对 PHP 还是很陌生(一周前开始),所以这对我来说仍然很神奇。

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 回答