Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   PHP поиск по txt файлу (http://www.flasher.ru/forum/showthread.php?t=126147)

LeXa4 11.06.2009 21:59

PHP поиск по txt файлу
 
Люди. Возникла проблемка. Пытаюсь сделать online игру на flash. Запутался с авторизацией.

Помогите плиз сделать код поиска по txt файлу.

Данные в файле записываются следующим образом:

ид:!:переменная1:!:переменная2:!:и т.д.
ид:!:переменная1:!:переменная2:!:и т.д.
ид:!:переменная1:!:переменная2:!:и т.д.

Надо сделать перебор строк.

Чтобы например php скрипт искал строку по определённому иду. :wacko:

dmk777 12.06.2009 06:16

Тебе нужна функция 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

LeXa4 12.06.2009 08:59

Спс большое друг.... =)

Mtnt 12.06.2009 13:23

а почему бы не использовать:
PHP код:

$idNeed//iskomij ID

$f=fopent(txtFile.txt,'r');
if (
$f) {
    
$str fgets($f,4096);
    if (
preg_replace(/:!:(.*)/i,'','$str) == $idNeed) {
        echo '
ID najdenispolzuem dannie iz $str';
    }
} else {
    echo '
не удалось открыть файл';


dmk777, у предложенного Вами метода есть преимущества перед этим?

LeXa4 12.06.2009 13:30

Тоже спасибо. Возможно у этого варианта выше скорость...

Добавлено через 4 минуты
Mtnt Следующий вопрос к тебе.

Если txt файл выглядит так:

Код:

1023:!:10231993
10231993:!:102319

А искомый ид так:

PHP код:

$idNeed="1023"

Не найдёт ли твой метод неправильную строку? Сравнение должно происходить только с первой переменной строки. Объясни плиз...

Mtnt 12.06.2009 15:50

а с каких пор 10231993 == 1023? =)

в строке мы оставляем все, что до ":!:", будь там 1023 или id1023

dmk777 12.06.2009 18:51

2 Mtnt
>dmk777, у предложенного Вами метода есть преимущества перед этим?

У меня написано 2 функции, которые решают любую задачу по чтению/записи любого типизированного файла. В параметре передается структура записи и длина данных. Возвращается ассоциативный массив с данными. Мне удобнее работать с бинарными файлами, т.к. сохраняется совместимость с типизированными структурами в C++ или Pascal. Теми же функциями можно считать сразу весь файл в ассоциативный массив и работать уже с массивом. Я делаю это при инициализации. Что удобнее автору пусть сам решает.

duhowka 12.06.2009 19:11

2LeXa4
надеюсь у Вас файлик не очень большой, а то может быть беда с производительностью или вообще хостер "прибьет" скрипт, т.к много процессорного времени занимать будет.

LeXa4 12.06.2009 22:05

Файл достаточно большой (не менее 10000 строк)

Яски 13.06.2009 01:00

Используйте БД


Часовой пояс GMT +4, время: 09:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.