Forum Webscript.Ru
Программирование => PHP => Тема начата: listopad от 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.
-
listopad
Блин. там нужно не имя файла а хендлер, получаемый при открытии файла fopen\'ом
Мануал читаем дружно, потому что это нужно. :beer:
-
Где же ошибка......
$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);
-
fwrite($file_name, $contents);
fwrite($fp, $contents);
-
listopad
Кстати, на это $fp=fopen($file_name, "r+");
он у тебя не ругается?
Надо бы
$fp = fopen($dir_name.$file_name, "r+");
-
И что за ограничение на размер файла в 100 Кб? Может, лучше fread($fp,filesize($dir_name.$file_name)); ?
-
А как предварительно удалить все содержимое из файла........?????
Работают ли регулярные выражения с кирилицей ..... У меня чего-то ничего не ищеться...... я специально создал файлы с содержимым "найти меня"
$expr="^найти меня$"; ----и все равно ничего не работает .....
А за дельные советы Спасибо !!!!
-
А как предварительно удалить все содержимое из файла........?????
fopen($file_name,"w");
Очищает файл при его открытии.
-
А как предварительно удалить все содержимое из файла........?????
Открываешь его для записи - и вуаля.
Работают ли регулярные выражения с кирилицей .....
Работают. Только надо не забыть, чтобы и строка поиска и условие были написаны в одной кодировке.
-
Нет, мне нужно немного не то......
В моем скрипте я открываю файл..... передаю содержимое в переменную....потом надо очисть файл.....и записать новое содержимое..
А сейчас скрипт постоянно дописывает новое содержимое в конце файла, и получается и старое содержимое и новое все в одном , а надо бы избавиться от старого предварительно......перед записью нового.!!!!!!
-
Повторяю для тех, кто в танке. Открытие файла на запись (см. постинг Теоретика) СТИРАЕТ содержимое файла (даже если ты туда ничего не писал).
-
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.
-
listopad
тебе надо открыть файл два раза.
сначала на r ,потом на w
можно еще попробовать на r+ и потом fseek на 0, и, если новая инфа меньше старой, то добить ее проблелами.
сам решай, что тебе удобнее.
я бы выбралпервый способ