为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
DIEA 2022-10-22 15:50:45
我有一个包含多个 .txt 文件的文件夹,名为:A500_1.txtA500_2.txtA700_1.txtA700_2.txtA900_1.txt...在每个 .txt 文件中都有:PRXC1_|TB|CCAAO9-RC|9353970324463|24.99PRXC1_|TB|CFEXK4-RC|9353970294766|84.99PRXC1_|TB|CFEXK4-RC|9353970294773|84.99...我希望你:如果文件名以 A500 开头_ 将“TB”替换为“MD”如果文件名以 A700 开头_ 将“TB”替换为“JB”如果文件名发件人代码以 A900 开头_ 将“TB”替换为“LD”我编写了这个函数,但它只是在项目的根目录下创建了一个空的 A500_2.TXT 文件并显示:Warning: file_get_contents(A500_2.TXT): failed to open stream:我的错误在哪里?<?phpfunction 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!";?>
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

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

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

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

$file = $dir . $file;

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


查看完整回答
反对 回复 2022-10-22
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信