[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбор строки полученой через сокет
sanchis
Доброго времени! Пишу скрипт мониторинга который получает данные через сокет, с получением проблем нет но не могу сообразить какое регулярное выражение нужно чтобы разбить строку не имея пробелов и знаков по которым это можно было бы сделать, вот сам скрипт:


$fp = fsockopen("tcp://192.168.1.4", '48888', $errno, $errstr);
if (!$fp) {
echo "ERROR: $errno - $errstr
\n"; #$errno - номер ошибки, $errstr - описание ошибки
} else {
$packet=array("\x00\x00\x00\x00\x1B\x00\x00\x00\x01\x00\x00\x00\x0A\x00\x00\x00serverInfo\x00","\x00\x00\x00\x00\x24\x00\x00\x00\x02\x00\x00\x00\x0B\x00\x00\x00listPlayers\x00\x03\x00\x00\x00all\x00","\x00\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00version\x00"); #содержимое отправляемого пакета
fwrite($fp, $packet[0]);
$serverinfo = fread($fp, 4096);
fwrite($fp, $packet[1]);
$playerinfo = fread($fp, 4096);
fwrite($fp, $packet[2]);
$version = fread($fp, 4096);

echo $serverinfo; // Вывожу строку для наглядности
fclose($fp);
}


Полученная строка выглядет так:

@OKTGC>>BRODYAG I (PunkBuster)032CONQUEST Levels/MP_0051122502500 NotConnectedtruetruefalse7646445BC28v1.826 | A1382 C2.305trueEU


Вот пример как нужно разделить
Цитата
1) TGC>>BRODYAG I (PunkBuster)
2) 0\32
3) CONQUEST
4) Levels/MP_005


Можно как то все сделать в массив или присвоить каждому пункту переменную?

Примечание: Название (т.е. пункт 1 может быть разной длинны, имею ввиду кол. символов) да и вообще информация меняется постоянно поэтому считать по количеству знаков бесполезно.

Прошу прощения если пишу возможно не там, просто где наиболее подходит тему создать не могу
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.