Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Замена строки в файле

Сообщения:  [1-7] 

 
 автор: cheops   (29.08.2005 в 01:11)   письмо автору
 
   для: Евгений Петров   (28.08.2005 в 14:41)
 

Это критично только если файл будет просматриваться под *NIX - действительно крайне раздражает... а так при аккуратном программировании проблем практически не бывает... разве, что при сборке-разборке содержимого файла.

   
 
 автор: Евгений Петров   (28.08.2005 в 17:59)   письмо автору
 
   для: pavelspon   (28.08.2005 в 17:34)
 

Я такой функции не знаю.
А вообще могу тебе посоветовать использовать другую функцию для замены строки
<?
  $num 
10// номер строки
  
$str "Строка которой нужно заменить исходную";
  
$f fopen("file.txt","r+");
  for(
$i=1;$i<$num;$i++)
    
fgets($f);
  
fwrite($f,$string);
  
fclose($f);
?>

Правда в этом случае если исходная строка будет больше чем конечная, то она замениться не полностью.

   
 
 автор: pavelspon   (28.08.2005 в 17:34)   письмо автору
 
   для: Евгений Петров   (28.08.2005 в 14:49)
 

Совсем не важно какая бала 8 строка главное чтобы вместо неё была записана
строка $str.
Вот только не понятно о какой особенности Windows вы говорите ведь даже если я не использую символ перевода каретки /r ($str."/n") то запись всеровно производится в начало ( в Windows), а если нет разницы ($str."/n" и $str."/r/n" результат один и тот же) в каком случае используют символ /r. Или может быть в системах *nix
без использования /r запись производиться не в начало строки ?

А также подскажите, нет ли в PHP ф-ии записывающей массив в файл так чтобы каждый элемент массива записывался с новой строки (бес построчной записи, что-то вроде обратной ф-ии file("XXXX"))?

   
 
 автор: Евгений Петров   (28.08.2005 в 14:49)   письмо автору
 
   для: pavelspon   (28.08.2005 в 02:29)
 

А какая была 7 строка (точнее 8)?

   
 
 автор: Евгений Петров   (28.08.2005 в 14:41)   письмо автору
 
   для: Sfinks   (28.08.2005 в 11:12)
 

Только не советую ставить символ перевода коретки \r т.к. это особенность Windows в *NIX системах перевод на другую строку осуществляется символом \n

   
 
 автор: Sfinks   (28.08.2005 в 11:12)   письмо автору
 
   для: pavelspon   (28.08.2005 в 02:29)
 

Во первых речь не о 7-ой строке, а о 8-ой. Первая строка $m[0];
Во вторых скрипт не "прибавляет к уже существующей 7 строке", а заменяет строку 7 и объединяет ее со строкой 8.
А происходит это потому что строка "777" не содержит символа переноса строки, а в tmp.txt Вы дописываете строки, "как есть".
Чтобы этого не происходило, заменять $m[7] нужно так:
$m[7]=$str."\r\n";

   
 
 автор: pavelspon   (28.08.2005 в 02:29)   письмо автору
 
 

Подскажите почему этот скрипт не заменяет 7 строку из файла pavel.php на
строку str=777, а прибавляет к уже существующей 7 строке ?

<?
$str=777;
$m=file("pavel.txt");
$m[7]=$str;
$tmp=fopen("tmp.txt","w");
foreach($m as $n)
{
fwrite($tmp,$n);
}
fclose($tmp);

copy("tmp.txt","pavel.txt");
?>

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования