Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.06.2009, 21:59
LeXa4 вне форума Посмотреть профиль Отправить личное сообщение для LeXa4 Посетить домашнюю страницу LeXa4 Найти все сообщения от LeXa4
  № 1  
Ответить с цитированием
LeXa4
 
Аватар для LeXa4

Регистрация: Jun 2009
Сообщений: 42
Отправить сообщение для LeXa4 с помощью ICQ
Cool PHP поиск по txt файлу

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

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

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

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

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

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

Старый 12.06.2009, 06:16
dmk777 вне форума Посмотреть профиль Отправить личное сообщение для dmk777 Найти все сообщения от dmk777
  № 2  
Ответить с цитированием
dmk777

Регистрация: Aug 2006
Сообщений: 10
Отправить сообщение для dmk777 с помощью ICQ
Тебе нужна функция 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

Старый 12.06.2009, 08:59
LeXa4 вне форума Посмотреть профиль Отправить личное сообщение для LeXa4 Посетить домашнюю страницу LeXa4 Найти все сообщения от LeXa4
  № 3  
Ответить с цитированием
LeXa4
 
Аватар для LeXa4

Регистрация: Jun 2009
Сообщений: 42
Отправить сообщение для LeXa4 с помощью ICQ
Спс большое друг.... =)

Старый 12.06.2009, 13:23
Mtnt вне форума Посмотреть профиль Отправить личное сообщение для Mtnt Найти все сообщения от Mtnt
  № 4  
Ответить с цитированием
Mtnt

Регистрация: Apr 2009
Сообщений: 95
а почему бы не использовать:
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, у предложенного Вами метода есть преимущества перед этим?

Старый 12.06.2009, 13:30
LeXa4 вне форума Посмотреть профиль Отправить личное сообщение для LeXa4 Посетить домашнюю страницу LeXa4 Найти все сообщения от LeXa4
  № 5  
Ответить с цитированием
LeXa4
 
Аватар для LeXa4

Регистрация: Jun 2009
Сообщений: 42
Отправить сообщение для LeXa4 с помощью ICQ
Тоже спасибо. Возможно у этого варианта выше скорость...

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

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

Код:
1023:!:10231993
10231993:!:102319
А искомый ид так:

PHP код:
$idNeed="1023"
Не найдёт ли твой метод неправильную строку? Сравнение должно происходить только с первой переменной строки. Объясни плиз...
__________________
Юзай google.com и всё будет хорошо...


Последний раз редактировалось LeXa4; 12.06.2009 в 13:36.
Старый 12.06.2009, 15:50
Mtnt вне форума Посмотреть профиль Отправить личное сообщение для Mtnt Найти все сообщения от Mtnt
  № 6  
Ответить с цитированием
Mtnt

Регистрация: Apr 2009
Сообщений: 95
а с каких пор 10231993 == 1023? =)

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

Старый 12.06.2009, 18:51
dmk777 вне форума Посмотреть профиль Отправить личное сообщение для dmk777 Найти все сообщения от dmk777
  № 7  
Ответить с цитированием
dmk777

Регистрация: Aug 2006
Сообщений: 10
Отправить сообщение для dmk777 с помощью ICQ
2 Mtnt
>dmk777, у предложенного Вами метода есть преимущества перед этим?

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

Старый 12.06.2009, 19:11
duhowka вне форума Посмотреть профиль Отправить личное сообщение для duhowka Найти все сообщения от duhowka
  № 8  
Ответить с цитированием
duhowka

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

Старый 12.06.2009, 22:05
LeXa4 вне форума Посмотреть профиль Отправить личное сообщение для LeXa4 Посетить домашнюю страницу LeXa4 Найти все сообщения от LeXa4
  № 9  
Ответить с цитированием
LeXa4
 
Аватар для LeXa4

Регистрация: Jun 2009
Сообщений: 42
Отправить сообщение для LeXa4 с помощью ICQ
Файл достаточно большой (не менее 10000 строк)
__________________
Юзай google.com и всё будет хорошо...

Старый 13.06.2009, 01:00
Яски вне форума Посмотреть профиль Отправить личное сообщение для Яски Найти все сообщения от Яски
  № 10  
Ответить с цитированием
Яски

блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
Используйте БД
__________________
TankiOnline
Я разработчик Alternativa3D

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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