如何编辑文件夹中多个不同名称的 .txt 文件?

How do I edit multiple .txt files with different names in a folder?

我有一个文件夹,其中包含多个名为 :

的 .txt 文件
A500_1.txt

A500_2.txt

A700_1.txt

A700_2.txt

A900_1.txt

...

在每个 .txt 文件中有:

PRXC1_|TB|CCAAO9-RC|9353970324463|24.99

PRXC1_|TB|CFEXK4-RC|9353970294766|84.99

PRXC1_|TB|CFEXK4-RC|9353970294773|84.99

...

我希望你:

我写了这个函数,但它只是在项目的根目录下为我创建了一个空的 A500_2.TXT 文件并显示:

Warning: file_get_contents(A500_2.TXT): failed to open stream:

我的错误在哪里?

<?php

function processFile( $path ) {

   $dir    = './test/';
   $allFiles = scandir($dir);

   foreach($allFiles as $file) {

       $filename = basename( $file );

        if ( ! in_array($file,array(".","..")))
      { 

       //read the entire string
       $str = file_get_contents( $file );

       // var_dump($str);

       // replace something in the file string
       if ( strpos( $filename, 'A500_' ) === 0 ) {

           $str = str_replace( 'TB', 'MD', $str );

       } else if ( strpos( $filename, 'A700_' ) === 0 ) {

           $str = str_replace( 'TB', 'JB', $str );

       } else if ( strpos( $filename, 'A900_' ) === 0 ) {

           $str = str_replace( 'TB', 'LD', $str );

       } else {
           // Return false if we don't know what to do with this file
           return false;
       }

       //write the entire string    
       $writeResult = file_put_contents( $file, $str );

       //return true after a file is written successfully, or false on failure
       return $writeResult >= 0;

  }
  }
}

if(processFile( './test/' )) echo "good!";
?>

file_get_contents 警告和正在创建的空白文件都是同一个问题 - scandir returns 只是文件名 ,不是当前 运行 脚本的相对路径。

我猜你希望它是 return 相对路径,这就是你在循环顶部调用 basename 的原因。实际上,您的 $file$filename 参数将始终设置为相同的东西。

最快的解决方案是在处理其他任何内容之前在 $file 前面加上扫描的目录名称:

$file = $dir . $file;

这应该可以修复读取和写入调用。