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

PHP:打开.txt文件,逐行读取,删除(年),php,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 (19

我正在寻找关于这方面的建议:

我有一个名为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)
因此,我正在寻找一种打开文本文件的方法,逐行读取它,删除年份值,同时删除年份之前的空格

然后我想将其另存为newmovies.txt


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

您可以使用该函数逐行读取文件。然后在上面画线,直到圆括号

比如说

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

然后将其保存回去。

~s*[]\d+[]$~m会更安全一点不?不确定$,因为这样的文本文件中可能有稀疏的尾随空格。但这是有道理的,我明白了。在这种情况下,使用m修饰符是没有意义的。你真的应该在发布之前做一些研究。最重要的是,它有助于你的理解。以下是一些链接,指向相关的易于阅读的资源,如何在字符串中替换,这里的一些示例首先使用fopen,然后使用file\u put\u内容?我建议你再简化一点。
<?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);
}
?>