Forum Webscript.Ru

Программирование => PHP => Тема начата: eXcimer от 17 Апреля 2004, 01:45:57

Название: fputs... проблемка
Отправлено: eXcimer от 17 Апреля 2004, 01:45:57
Подскажите пожалста ничего не соображающему в PHP... Я решил по-простому состряпать новостной скрипт... Заполняю форму, жму "Отсыл", файл (шаблон) на серваке копируется через copy() - все ОК. Открываю файл fopen(), чтоб залить нужную инфу на места при помощи strlen. Все выходит замечательно если я пытаюсь заменить только одно из значений шаблона, например . В ином случае содержимое страницы копируется столько раз, сколько и попыток записи.  Я видимо не умею юзать fputs... Короче как мне заменить несколько значений в одном шаблоне. Скриптик щас какой-НИКАКОЙ выглядит так:

// выше там всякое копирование и т.п.
$WFILE = "/path/to/file.html";
$MOTIF = "";

   $file_arry = file($WFILE);
   $file = join ("", $file_arry);

   $add = "Предположим че-нить на замену MOTIF";

   $file = preg_replace("/$MOTIF/", $add, $file);

   $fp = fopen("$WFILE", "w");
   flock($fp, 1);
// здесь мы и делаем замену. а если нужно повторить операцию, но уже с другим значение $file?
   fputs($fp, $file);                                                    
   flock($fp, 3); //3
   fclose($fp);
?>

Заранее спасибо!
Название: fputs... проблемка
Отправлено: FreeSpace от 17 Апреля 2004, 15:41:35
Цитировать
eXcimer:
$file_arry = file($WFILE); $file = join ("", $file_arry);

Если версия пхп 4.3.0 или выше, замени этот кусок на
$file = file_get_contents($WFILE);
Так быстрее работать будет.
Цитировать
$file = preg_replace("/$MOTIF/", $add, $file);

Здесь можно добавить [p]preg_quote[/p]:
$file = preg_replace(\'/\'.preg_quote($MOTIF).\'/\', $add, $file);
Цитировать
eXcimer:
здесь мы и делаем замену

Какую ещё замену?
А preg_replace тогда чем занимался?
Цитировать
eXcimer:
а если нужно повторить операцию, но уже с другим значение $file

А для этого существует такая штука, как функция.
Пишешь функцию, которая бы принимала в качестве аргумента $file и обрабатывала его соответствующим образом, возвращая результат обработки.