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

Форум PHP

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

 

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

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

тема: Как удалить из файла строку, не зная её номера...

Сообщения:  [1-10]    [11-20]  [21-22] 

 
 автор: kolik   (06.06.2006 в 08:17)   письмо автору
 
   для: valenok   (05.06.2006 в 19:28)
 

Ну так скажи как правильно.

   
 
 автор: valenok   (05.06.2006 в 19:28)   письмо автору
 
   для: Ziq   (05.06.2006 в 19:18)
 

ошибка

   
 
 автор: Ziq   (05.06.2006 в 19:18)   письмо автору
 
   для: kolik   (05.06.2006 в 17:51)
 

По-моему, удаляет из оперативной памяти переменную. Т.е. полностью стирает и освобождает место, а не присваивает значение пустой строки.

Иногда еще используют функцию isset(). Вот пример из офиц. руководство, может станет пон6ятней.

<?
$a 
"test";
$b "anothertest";

var_dump(isset($a));      // TRUE
var_dump(isset($a$b)); // TRUE

unset ($a);

var_dump(isset($a));     // FALSE
var_dump(isset($a$b)); // FALSE

$foo NULL;
var_dump(isset($foo));   // FALSE
?> 

   
 
 автор: kolik   (05.06.2006 в 17:51)   письмо автору
 
   для: Владимир22   (04.06.2006 в 19:51)
 

Чипсы, а что делает функция "unset"?

   
 
 автор: Владимир22   (05.06.2006 в 14:13)   письмо автору
 
   для: cheops   (05.06.2006 в 03:39)
 

Спасибо! Наконец-то всё заработало как надо, а то промучился несколько дней. Благодарю Вас!

   
 
 автор: cheops   (05.06.2006 в 03:39)   письмо автору
 
   для: Владимир22   (05.06.2006 в 01:46)
 

Вы можете использовать следующее решение
<?php
  $string 
"ejhrfbv:::22";
  
$file file('text.txt'); 
  for (
$i=0;$i<count($file);$i++)
  { 
    if(
trim($file[$i])==$string) unset($file[$i]);
  }
  
print_r($file);
  
$h fopen('text.txt',"w");
  
fwrite($himplode("",$file));
  
fclose($h
?>

   
 
 автор: Владимир22   (05.06.2006 в 01:46)   письмо автору
 
   для: valenok   (04.06.2006 в 23:59)
 


$file=file('text.txt');
$h=fopen('text.txt',"w")
for ($i=0;$i<count($file);$i++){
if($file[$i]==$string) {
continue; }
fputs ($h,$file[$i]);
fclose($h)
 }


Либо стирает всё, либо пишет:
Warning: fputs(): 3 is not a valid stream resource in .........

   
 
 автор: valenok   (04.06.2006 в 23:59)   письмо автору
 
   для: ec_stasis   (04.06.2006 в 22:50)
 

[поправлено модератором]

   
 
 автор: ec_stasis   (04.06.2006 в 22:50)   письмо автору
 
   для: Владимир22   (04.06.2006 в 21:54)
 

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

   
 
 автор: ec_stasis   (04.06.2006 в 22:45)   письмо автору
 
   для: Владимир22   (04.06.2006 в 21:54)
 

Ну да, unlink() забыл написать, не удаляется возможно потому, что строка читается вместе с переводом строки в конце, я точно не помню, попробуй

<?
...
 if (
trim($str) != $string
...

или

<?
...
 if (
trim($str) != $string."\n"
...

   

Сообщения:  [1-10]    [11-20]  [21-22] 

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

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