文件获取内容和字符串替换多个文件
File get contents and string replace for multiple files
我在名为 test 的文件夹中有许多文件,alpha.php、beta.php 和 gamma.php。我需要获取这三个文件的内容,并将其中的一个字符串替换为另一个字符串。
要替换文件夹中的所有内容,此方法有效:
foreach (new DirectoryIterator('./test') as $folder) {
if ($folder->getExtension() === 'php') {
$file = file_get_contents($folder->getPathname());
if(strpos($file, "Hello You") !== false){
echo "Already Replaced";
}
else {
$str=str_replace("Go Away", "Hello You",$file);
file_put_contents($folder->getPathname(), $str);
echo "done";
}
}
}
但我不想处理文件夹中的所有文件。我只想获取 3 个文件:alpha.php、beta.php 和 gamma.php 并处理它们。
有什么方法可以做到这一点,或者我必须单独获取文件并单独处理它们?谢谢
只是foreach
你想要的:
foreach (['alpha.php', 'beta.php', 'gamma.php'] as $filename) {
$file = file_get_contents("./test/$filename");
if(strpos($file, "Hello You") !== false){
echo "Already Replaced";
}
else {
$str = str_replace("Go Away", "Hello You", $file);
file_put_contents("./test/$filename", $str);
echo "done";
}
}
你不需要 if
除非你真的需要 echo
来查看何时有替换:
foreach (['alpha.php', 'beta.php', 'gamma.php'] as $filename) {
$file = file_get_contents("./test/$filename");
$str = str_replace("Go Away", "Hello You", $file);
file_put_contents("./test/$filename", $str);
}
或者您可以获得替换次数:
$str = str_replace("Go Away", "Hello You", $file, $count);
if($count) {
file_put_contents("./test/$filename", $str);
}
如果它是预定义的文件,那么您不需要 DirectoryIterator,只需用 3 行或一个循环替换内容
<?php
$files = ['alpha.php', 'beta.php', 'gamma.php'];
foreach ($files as $file)
file_put_contents('./test/'.$file, str_replace("Go Away", "Hello You", file_get_contents('./test/'.$file)));
我在名为 test 的文件夹中有许多文件,alpha.php、beta.php 和 gamma.php。我需要获取这三个文件的内容,并将其中的一个字符串替换为另一个字符串。 要替换文件夹中的所有内容,此方法有效:
foreach (new DirectoryIterator('./test') as $folder) {
if ($folder->getExtension() === 'php') {
$file = file_get_contents($folder->getPathname());
if(strpos($file, "Hello You") !== false){
echo "Already Replaced";
}
else {
$str=str_replace("Go Away", "Hello You",$file);
file_put_contents($folder->getPathname(), $str);
echo "done";
}
}
}
但我不想处理文件夹中的所有文件。我只想获取 3 个文件:alpha.php、beta.php 和 gamma.php 并处理它们。
有什么方法可以做到这一点,或者我必须单独获取文件并单独处理它们?谢谢
只是foreach
你想要的:
foreach (['alpha.php', 'beta.php', 'gamma.php'] as $filename) {
$file = file_get_contents("./test/$filename");
if(strpos($file, "Hello You") !== false){
echo "Already Replaced";
}
else {
$str = str_replace("Go Away", "Hello You", $file);
file_put_contents("./test/$filename", $str);
echo "done";
}
}
你不需要 if
除非你真的需要 echo
来查看何时有替换:
foreach (['alpha.php', 'beta.php', 'gamma.php'] as $filename) {
$file = file_get_contents("./test/$filename");
$str = str_replace("Go Away", "Hello You", $file);
file_put_contents("./test/$filename", $str);
}
或者您可以获得替换次数:
$str = str_replace("Go Away", "Hello You", $file, $count);
if($count) {
file_put_contents("./test/$filename", $str);
}
如果它是预定义的文件,那么您不需要 DirectoryIterator,只需用 3 行或一个循环替换内容
<?php
$files = ['alpha.php', 'beta.php', 'gamma.php'];
foreach ($files as $file)
file_put_contents('./test/'.$file, str_replace("Go Away", "Hello You", file_get_contents('./test/'.$file)));