Автор Тема: fwrite()......  (Прочитано 4255 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн listopad

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 142
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.loadfile.ru
fwrite()......
« : 21 Июля 2002, 13:36:02 »
Проблема такая.....
написал скрипт , который ищет во  всех файлах в определенном каталоге какое-то слово и заменяет его на другое...... но вот проблема.....комп пишет:

Warning: Supplied argument is not a valid File-Handle resource in c:/program files/apache group/apache/htdocs/replace.php on line 20

на 20 линии в скрипте....fwrite($file_name, $contents);

Не могу понять чего он хочет ...... !!!!!

php и Apache установлены на дом. компе под WIN98.
 - On-line сервис.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
fwrite()......
« Ответ #1 : 21 Июля 2002, 13:46:57 »
listopad
Блин. там нужно не имя файла а хендлер, получаемый при открытии файла fopen\'ом
Мануал читаем дружно, потому что это нужно. :beer:
AS IS...

Оффлайн listopad

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 142
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.loadfile.ru
fwrite()......
« Ответ #2 : 21 Июля 2002, 18:22:40 »
Где же ошибка......

$dir_name = "D:/xxx/";

$expr="найти меня";
$change="заменить мной";

$dir = opendir($dir_name);

while ($file_name = readdir($dir))
{
   if (($file_name != ".") && ($file_name != "..")) {
        
     $fp=fopen($file_name, "r+");
   $contents = fread($fp, 100000);

$contents=ereg_replace($expr,$change,$contents);
fwrite($file_name, $contents);
fclose($fp);
}
}

closedir($dir);
 - On-line сервис.

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
fwrite()......
« Ответ #3 : 21 Июля 2002, 18:38:54 »
Цитировать
fwrite($file_name, $contents);

fwrite($fp$contents); 
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
fwrite()......
« Ответ #4 : 21 Июля 2002, 18:42:43 »
listopad
Кстати, на это
Цитировать
$fp=fopen($file_name, "r+");

он у тебя не ругается?
Надо бы

$fp 
fopen($dir_name.$file_name"r+"); 
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
fwrite()......
« Ответ #5 : 21 Июля 2002, 19:13:33 »
И что за ограничение на размер файла в 100 Кб? Может, лучше fread($fp,filesize($dir_name.$file_name)); ?
TANSTAAFL

Оффлайн listopad

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 142
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.loadfile.ru
fwrite()......
« Ответ #6 : 23 Июля 2002, 11:59:17 »
А как предварительно удалить все содержимое из файла........?????
Работают ли регулярные выражения с кирилицей ..... У меня чего-то ничего не ищеться...... я специально создал файлы с содержимым "найти меня"
$expr="^найти меня$"; ----и все равно ничего не работает .....


А за дельные советы Спасибо !!!!
 - On-line сервис.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
fwrite()......
« Ответ #7 : 23 Июля 2002, 12:04:52 »
Цитировать
А как предварительно удалить все содержимое из файла........?????

fopen($file_name,"w");
Очищает файл при его открытии.
AS IS...

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
fwrite()......
« Ответ #8 : 23 Июля 2002, 12:08:30 »
Цитировать
А как предварительно удалить все содержимое из файла........?????


Открываешь его для записи - и вуаля.


Цитировать
Работают ли регулярные выражения с кирилицей .....


Работают. Только надо не забыть, чтобы и строка поиска и условие были написаны в одной кодировке.
TANSTAAFL

Оффлайн listopad

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 142
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.loadfile.ru
fwrite()......
« Ответ #9 : 23 Июля 2002, 12:35:12 »
Нет,  мне нужно немного не то......
В моем скрипте я открываю файл..... передаю содержимое в переменную....потом надо очисть файл.....и  записать новое содержимое..
А сейчас скрипт постоянно дописывает новое содержимое в конце файла, и получается и старое содержимое и новое все в одном , а надо бы избавиться от старого предварительно......перед записью нового.!!!!!!
 - On-line сервис.

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
fwrite()......
« Ответ #10 : 23 Июля 2002, 12:40:35 »
Повторяю для тех, кто в танке. Открытие файла на запись (см. постинг Теоретика) СТИРАЕТ содержимое файла (даже если ты туда ничего не писал).
TANSTAAFL

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
fwrite()......
« Ответ #11 : 23 Июля 2002, 12:45:42 »
listopad
Считай при помощи file.
ПОТОМ fopen С КЛЮЧОМ "w".
В мануал совсем лень залезть, млин?
http://ru.php.net/manual/en/function.fopen.php
Цитировать

\'w\' - Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.
AS IS...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
fwrite()......
« Ответ #12 : 23 Июля 2002, 12:51:30 »
listopad
тебе надо открыть файл два раза.
сначала на r ,потом на w

можно еще попробовать на r+ и потом fseek на 0, и, если новая инфа меньше старой, то добить ее проблелами.
сам решай, что тебе удобнее.

я бы выбралпервый способ

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28