PHP:打开.txt文件,逐行阅读,删除(年份)

时间:2012-10-12 15:03:34

标签: php

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

我有一个名为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的新手(一周前开始),所以这对我来说仍然很神奇。

2 个答案:

答案 0 :(得分: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

然后保存回来。

答案 1 :(得分: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);
}
?>