![]() |
|
||||||||||
|
|||||
|
Люди. Возникла проблемка. Пытаюсь сделать online игру на flash. Запутался с авторизацией.
Помогите плиз сделать код поиска по txt файлу. Данные в файле записываются следующим образом: ид:!:переменная1:!:переменная2:!:и т.д. ид:!:переменная1:!:переменная2:!:и т.д. ид:!:переменная1:!:переменная2:!:и т.д. Надо сделать перебор строк. Чтобы например php скрипт искал строку по определённому иду. ![]() |
|
|||||
|
Тебе нужна функция Pack
fseek($fp, $offset, SEEK_SET);//Положение записи $bin = fread($fp, $datalen);//читаем бинарные данные $array = unpack($bin_decode, $bin);//Распаковываем в ассоциативный массив $array["Category"];//Обращаемся к массиву $bin_decode должен выглядеть как структура описывающая структуру записи в файле, т.е. жалкое подобие типизации: $bin_decode = "Vid/Vvar1/Vvar2/astr40"; a - NUL-padded string A - SPACE-padded string h - Hex string, low nibble first H - Hex string, high nibble first c - signed char C - unsigned char s - signed short (always 16 bit, machine byte order) S - unsigned short (always 16 bit, machine byte order) n - unsigned short (always 16 bit, big endian byte order) v - unsigned short (always 16 bit, little endian byte order) i - signed integer (machine dependent size and byte order) I - unsigned integer (machine dependent size and byte order) l - signed long (always 32 bit, machine byte order) L - unsigned long (always 32 bit, machine byte order) N - unsigned long (always 32 bit, big endian byte order) V - unsigned long (always 32 bit, little endian byte order) f - float (machine dependent size and representation) d - double (machine dependent size and representation) x - NUL byte X - Back up one byte @ - NUL-fill to absolute position Короче - читать документацию по функции PHP->PACK/UNPACK |
|
|||||
|
Спс большое друг.... =)
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 95
|
а почему бы не использовать:
dmk777, у предложенного Вами метода есть преимущества перед этим? |
|
|||||
|
Тоже спасибо. Возможно у этого варианта выше скорость...
Добавлено через 4 минуты Mtnt Следующий вопрос к тебе. Если txt файл выглядит так: А искомый ид так: Не найдёт ли твой метод неправильную строку? Сравнение должно происходить только с первой переменной строки. Объясни плиз...
__________________
Юзай google.com и всё будет хорошо... Последний раз редактировалось LeXa4; 12.06.2009 в 13:36. |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 95
|
а с каких пор 10231993 == 1023? =)
в строке мы оставляем все, что до ":!:", будь там 1023 или id1023 |
|
|||||
|
2 Mtnt
>dmk777, у предложенного Вами метода есть преимущества перед этим? У меня написано 2 функции, которые решают любую задачу по чтению/записи любого типизированного файла. В параметре передается структура записи и длина данных. Возвращается ассоциативный массив с данными. Мне удобнее работать с бинарными файлами, т.к. сохраняется совместимость с типизированными структурами в C++ или Pascal. Теми же функциями можно считать сразу весь файл в ассоциативный массив и работать уже с массивом. Я делаю это при инициализации. Что удобнее автору пусть сам решает. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 317
|
2LeXa4
надеюсь у Вас файлик не очень большой, а то может быть беда с производительностью или вообще хостер "прибьет" скрипт, т.к много процессорного времени занимать будет. |
|
|||||
|
Файл достаточно большой (не менее 10000 строк)
__________________
Юзай google.com и всё будет хорошо... |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|