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

文件获取内容和字符串替换多个文件

文件获取内容和字符串替换多个文件

PHP
慕盖茨4494581 2022-12-23 14:31:50
我在名为 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 并处理它们。有什么办法可以做到这一点,或者我必须单独获取文件并单独处理它们?谢谢。
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

正是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";

    }

}

你不需要 theif除非你真的需要echos 来查看何时有替换:


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); 

    }

在 Linux 上,您也可以尝试使用replacereplexec或某些东西,因为它们接受多个文件。



查看完整回答
反对 回复 2022-12-23
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

如果它是预定义的文件,那么您不需要 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)));



查看完整回答
反对 回复 2022-12-23
  • 2 回答
  • 0 关注
  • 74 浏览

添加回答

举报

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