如何编辑文件夹中多个不同名称的 .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_ 开头,请将 "TB" 替换为 "MD"
如果文件名以 A700_ 开头,将 "TB" 替换为 "JB"
如果文件名发件人代码以 A900_ 开头,请将 "TB" 替换为 "LD"
我写了这个函数,但它只是在项目的根目录下为我创建了一个空的 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;
这应该可以修复读取和写入调用。
我有一个文件夹,其中包含多个名为 :
的 .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_ 开头,请将 "TB" 替换为 "MD"
如果文件名以 A700_ 开头,将 "TB" 替换为 "JB"
如果文件名发件人代码以 A900_ 开头,请将 "TB" 替换为 "LD"
我写了这个函数,但它只是在项目的根目录下为我创建了一个空的 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;
这应该可以修复读取和写入调用。