0

内部のファイルが次のようになっているファイル(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);

これにより、すべての行が置き換えられます (ファイル内の 5 行)。したがって、上記の str_replace() は正しく機能しません。次のような結果が必要です

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

PHPファイルのコメントされていない行のみを置き換える方法を教えてください

4

2 に答える 2

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));
}
于 2013-07-04T06:39:14.217 に答える
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

ここでこれを試してください。各行を配列に分割し、各行を個別にチェックして、行がコメントでない場合は古い値を新しい値に置き換えます

于 2013-07-04T06:38:05.100 に答える