2013-07-04 2 views
0

У меня есть файл (файл 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'); */ 

пожалуйста, помогите мне, как заменить только не-comented строки в PHP файле

+1

используйте regx, чтобы проверить, не начинается ли строка с // или/* и не заканчивается на */ –

+0

Почему бы вам не удалить эти строки, если не нужно – Dolly

+0

Пожалуйста, обратитесь к http://stackoverflow.com/ questions/834303/php-startswith-and-endswith-functions – Dolly

ответ

1

Я предположил, что это последняя строка (как вы упомянули) в файле, который вы хотите изменить, и у вас есть разрешение на запись в том, что, таким образом, symply это должно работать

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

Update: (После того, как вопрос был прав)

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

извините за это, в моем примере последняя строка (нужно заменить каждую строку без комментариев) – Duleep

+1

Вы сказали только прокомментированные строки, а также дали образец того, что вы хотите, поэтому я думаю, что результат в моем ответе соответствует вашему образцу, теперь я смущен. –

+1

извините за мой вопрос, я сделал некоторую ошибку. теперь я редактировал свой вопрос. Thankx – Duleep

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 

Try это здесь мы ломаем каждую строку в массив, а затем проверка каждая строка отдельно для комментариев, если строка не является комментарием, мы заменяем старое значение новым Надеюсь, это поможет!