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

时间:2013-07-04 06:12:31

标签: php

我有文件(php文件)里面的文件看起来像波纹管

$ php_file_string

//define ( 'name', 'saman' );
   //       define ( 'name', 'saman' );
define ( 'name', 'saman' );
#  define ( 'name', 'saman' );
 /* define ( 'name', 'saman' ); */

我想替换未注释的行

$ search_string:

define ( 'name', 'saman' );

$ NEW_VALUE:

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文件中未注释的行

2 个答案:

答案 0 :(得分:1)

我认为,这是您要更改的文件中的最后一行(如您所述),并且您具有写入权限,因此,这应该可以正常工作

$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($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));
}

答案 1 :(得分:0)

$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

在这里尝试这个我们将每一行分成一个数组,然后分别检查每一行是否有注释,如果一行不是注释我们用新的替换旧值 希望它有所帮助!!