Автор Тема: Помогите решить тривиальную задачу, плз!  (Прочитано 3311 раз)

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

Оффлайн Wanderer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Знатоки, помогите начинающему программеру PHP решить простенькую задачу, пожалуйста:

имеем текстовый файл типа:

СЛОВО ЦИФРА

СЛОВО ЦИФРА

и так далее

Необходимо при очередной записи в этот файл к последней ЦИФРА прибавит 1 и записать соответственно в конец файла.

На улице уже ночь, а времени на решение задачи почти не осталось и мозги уже кипят литературу ворошить :insane:

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Помогите решить тривиальную задачу, плз!
« Ответ #1 : 24 Января 2003, 00:15:44 »
Конечно можно написать лучше...

function AddWord($file$word) {
    
$file_data=file($file); // читаем файл
    
$last_string=&$file_data[sizeof($file_data)-1]; // делаем ссылку на последнию строку
    
$last_string_contents=explode(" "$last_string);
 
// в $last_string_contents[0] последнее слово
 // а в $last_string_contents[1] цифра
    
$file_data[]=$word." ".($last_string_contents[1]+1); // добавляем новую строку
    
$f=fopen($file"a+") or die("Can`t open <b>".$file."</b> file"); // открываем файл
    
flock($f2); // ставим блокировку
    
ftruncate($f,0); // очищаем файл
    
fwrite($fjoin(""$file_data)); // записываем
    
flock($f,3); // снимаем блокировку
    
fclose($f); // закрываем файл
    
return true;
}
« Последнее редактирование: 24 Января 2003, 09:25:30 от Tronyx »
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите решить тривиальную задачу, плз!
« Ответ #2 : 24 Января 2003, 00:36:51 »
Замечания :-)
После file джойнить надо пустой строкой.
читать весь файл - непроизводительно.
 открывать два раза - непроизводительно
Непонятки.
Зачем ссылка на массив?
Предложения.
Открывать на а+, читать с конца килобайт примерно, тримать, strrpos-ить \\n, брать число, добавлять строку, фсикаем на конец, пишем.
Заключение. Для примера и обучения твой пример вполне неплох.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Помогите решить тривиальную задачу, плз!
« Ответ #3 : 24 Января 2003, 09:25:43 »
Цитировать
После file джойнить надо пустой строкой.

Я всегда путаю... Спасибо. :)

Цитировать
Зачем ссылка на массив?

Чтобы тут прописать только ссылку, всмысле чтобы более читабельно было.
Цитировать
$last_string_contents=explode(" ", $last_string);


Цитировать
Заключение. Для примера и обучения твой пример вполне неплох.

Для этого он и писался, лучше научить человека, чем писать за него. Потому что твой вариант, он наверное бы не понял, но зато твой вариант намного быстрее. ;) Я же написал:
Цитировать
Конечно можно написать лучше...
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Wanderer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите решить тривиальную задачу, плз!
« Ответ #4 : 27 Января 2003, 16:38:21 »
Спасибо всем, кто откликнулся на просьбу. Напровление решения усек и дополнил. В результате задачку решил, но вылезла проблема:
Результат дописывается в файл в кодировке "windows-1251", а мне надо его туда дописывать в "KOI8-R". Как быть?!
причем вывод формы через веб должен быть в "windows-1251" - по другому никак :(

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Помогите решить тривиальную задачу, плз!
« Ответ #5 : 27 Января 2003, 17:14:43 »
$string=convert_cyr_string($string, "w", "k");
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

 

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