Функция замены строки в файле

Print RSS
72

K
Author
Транклюкаторщик
0
Есть у кого нить готовое решение ?

Оранжевые штаны
0
Wap-Motor 19:
<?php
//------------------- Функция замены строки в файлe --------------------//
function replace_lines($files, $lines, $text){

if (file_exists($files)){
if ($lines!==""){
if ($text!=""){

$file = file($files);
$fp = fopen($files, "a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);

foreach($file as $key=>$val){ 

if ($lines==$key) {
fputs($fp,"$text\r\n");

} else {

fputs($fp,$val);
}
}

fflush($fp);
flock ($fp,LOCK_UN);
fclose($fp);
}}}}
?>
K
Author
Транклюкаторщик
0
у меня вот так получилось, хз,мне кажется можно как то получше это реализовать
<?
function replace($from,$to,$str,$file) {
// $from - заменяемый текст
// $to - текст на который заменяем
// $str - строка в которой заменяем
// $file - файл в котором производим замену
$f1 = file_get_contents($file);
$str_num = explode("\n",$f1);
$f2 = str_replace($from,$to,$f1);
if(file_put_contents($file,$f2)){echo 'Замена произведена успешно!';} else {echo 'Ошибка замены!';}
}

replace('1','2',0,'file.txt');
?>
Changed: KOZZ (26.07.2010 / 10:09)
В

Чатланин
0
у тебя номер строки тут вообще не используется в функции.. Просто заменяет во всём файле.
Да и не нужен этот параметр, я думаю.
K
Author
Транклюкаторщик
0
4, нужен, просто я не то скопировал ))

Пацак
0
<?php
$what = 'что меняем';
$to = 'на что меняем';

$file = file('файл');

if ( $key = array_search($what, $file) ) $file[$key] = $to;
?>
Changed: DmitryDick (26.07.2010 / 13:14)
K
Author
Транклюкаторщик
0
6,а как потом запись в твоем варианте делать чтобы остальные строки сохранились?
Changed: KOZZ (26.07.2010 / 13:23)

Пацак
0
<?php 

function replace_line($what, $to, $current_file) {

$file = file($current_file); 

if ( $key = array_search($what, $file) ) {

$file[$key] = $to; 
file_put_contents($current_file, implode("\n", $file));

return true;

}

return false;

}

?>
Changed: DmitryDick (26.07.2010 / 13:31)
K
Author
Транклюкаторщик
0
8, не робит

Персональный статус
0
а если так?
<?php
/*
file.dat
1|user|password
2|user2|password2
*/
$parametr = $_GET['parametr'];
/*
$parametr = 1;
*/
$file=file('file.dat');
$count=count($file);
for($i=0;$i<$count;$i++)
{
$ex=explode('|',$file[$i]);
if ($ex[0]==$parametr)
{

$var=str_replace($ex[0].'|'.$ex[1].'|'.$ex[2], $parametr.'|user3|password3', file_get_contents("file.dat"));
$fopen=fopen("file.dat","w");
fputs($fopen,$var);
fclose($fopen);

}
}
?>
Stickers / Tags / Rules / Top topics / Top Posts / Search