如何替换php文件中的字符串行?

如何替换php文件中的字符串行?,php,Php,我有一个文件(php文件),里面的文件看起来像贝娄 $php\u文件\u字符串 //define ( 'name', 'saman' ); // define ( 'name', 'saman' ); define ( 'name', 'saman' ); # define ( 'name', 'saman' ); /* define ( 'name', 'saman' ); */ 我想替换未注释的行 $search\u字符串: define ( 'name', 'sam

我有一个文件(php文件),里面的文件看起来像贝娄

$php\u文件\u字符串

//define ( 'name', 'saman' );
   //       define ( 'name', 'saman' );
define ( 'name', 'saman' );
#  define ( 'name', 'saman' );
 /* define ( 'name', 'saman' ); */
我想替换未注释的行

$search\u字符串:

define ( 'name', 'saman' );
$new_值:

define ( 'name', 'RoX' );
我尝试使用

str_replace($search_string, $new_value, $php_file_string);
这将替换所有行(文件中的五行)。所以上面的str_replace()对我来说是不正确的。我需要一些看起来像下面结果的东西

//define ( 'name', 'saman' );
   //       define ( 'name', 'saman' );
define ( 'name', 'RoX' );
#  define ( 'name', 'saman' );
 /* define ( 'name', 'saman' ); */
请帮助我如何仅替换php文件中未显示的行(“\n”,$php\u file\u string”)//将每行拆分为数组
$u=explode("\n",$php_file_string);//Breaking each line into array
for($i=0;$i<count($u);$i++)
{
if(!substr_count($u[$i],"/*")&&!substr_count($u[$i],"#")&&!substr_count($u[$i],"//"))
//Checking whether line contains any comment or not
$u[$i]=str_replace($search_string, $new_value, $u[$i]);
}
//Now you can use $u as an string array

对于($i=0;$i我假设,这是文件中要更改的最后一行(如您所述),并且您具有写入权限,因此,这应该可以正常工作

$file = 'path/filename.php';
$lines =file($file);
$lines[count($lines)-1]="define ( 'name', 'RoX' );";
if(is_writable($file))
{
    file_put_contents($file, implode($lines));
}
结果将是:

//define ( 'name', 'saman' );
//       define ( 'name', 'saman' );
#  define ( 'name', 'saman' );
/* define ( 'name', 'saman' ); */
define ( 'name', 'RoX' );
更新:(编辑问题后)

$file='../mytests/index.php';
$lines=文件($file);
对于($i=0;$i<计数($line);$i++)
{
if(substr($line[$i],0,6)=‘define’){
$lines[$i]=“定义('name','RoX');”;
}
}
如果(可写($file))
{
文件内容($file,内爆($line));
}

使用regx检查行是否不以//或/*开头,也不以*/结尾。如果不需要,为什么不删除这些行?请参阅此部分。您确定不想对变量执行操作吗?很抱歉,在我的示例中,最后一行(需要替换所有未注释的行)你说只有未注释的行,还提供了你想要的示例,因此我认为我的答案中的输出与你的示例相符,现在我感到困惑。对不起,我的问题我犯了一些错误。现在我编辑了我的问题。谢谢
$file = '../mytests/index.php';
$lines = file($file);
for($i=0; $i < count($lines); $i++)
{
    if(substr($lines[$i], 0, 6) === 'define') {
        $lines[$i] = "define ( 'name', 'RoX' );";
    }
}
if(is_writable($file))
{
    file_put_contents($file, implode($lines));
}