Lord Micro
Guest
Однажды решил сделать TCP/IP-сервер, ...
Однажды решил сделать TCP/IP-сервер, все получилось чики-пуки. Но вот встала проблема передачи каких-либо команд(сокетов, назовите как хотите) данному TCP/IP-серверу. Вообщем вопрос встал в каком формате их передавать.
Как человеку, любящему Unix-системы я решил создать формат как в консоли Unix-система(info --user="test" --password="tetet" -s -v -ab).
Вообщем я начал ваять эту штуку...Вот смотрите что вышло...
"a--" - ищет по типу: --user="root" (реализовано)
"b--" - ищет по типу: --user='root' (реализовано)
"c--" - ищет по типу: --user=root (реализовано)
"a-" - ищет по типу: -u "root" (реализовано)
"b-" - ищет по типу: -u 'root' (реализовано)
"c-" - ищет по типу: -u root (реализовано)
"a" - ищет по типу: -a -b (не реализовано)
"b" - ищет по типу: -abc (не реализовано)
Так вот не знаю как быть со следующими двумя. Помогите плиз!
Однажды решил сделать TCP/IP-сервер, все получилось чики-пуки. Но вот встала проблема передачи каких-либо команд(сокетов, назовите как хотите) данному TCP/IP-серверу. Вообщем вопрос встал в каком формате их передавать.
Как человеку, любящему Unix-системы я решил создать формат как в консоли Unix-система(info --user="test" --password="tetet" -s -v -ab).
Вообщем я начал ваять эту штуку...Вот смотрите что вышло...
PHP:
#!/usr/local/bin/php -q
<?php
$test_array = array(
"info",
"info -u root",
'info -u "root"',
"info -u 'root'",
"info --user=root",
'info --user="root"',
"info --user='root'",
"info --user=root",
"info -abc -dez",
"info -a -b -c",
"info --user=root -abc -x -y -u root -z -t 'test' -r \"terstik\" --vot=\"eto\" --vot2='eto2' --tri=\"test\" --cool='test' --ttt=test --tt=test -o -l test1 k"
);
function parse_cm($string)
{
//$string=trim($string);
$array=array();
$string = $string." ";
$array['all'] = $string;
preg_match("/^\s*([A-Za-z][A-Za-z0-9]*)\s*(\s.*\s)?\s*$/",$string,$match);
$array['function'] = $match[1];
preg_match_all("/\s--([A-Za-z][A-Za-z0-9]*)\s*=\s*\"([^\"]+)\"\s?/",$match[2],$match2,PREG_SET_ORDER);
$array['a--']=$match2;
preg_match_all("/\s--([A-Za-z][A-Za-z0-9]*)\s*=\s*'([^']+)'\s?/",$match[2],$match3,PREG_SET_ORDER);
$array['b--']=$match3;
preg_match_all("/\s--([A-Za-z][A-Za-z0-9]*)\s*=\s*([^\s'\"]+)\s?/",$match[2],$match4,PREG_SET_ORDER);
$array['c--']=$match4;
preg_match_all("/\s-([A-Za-z])\s+([^\s-\"']+)+\s?/",$match[2],$match5,PREG_SET_ORDER);
$array['a-']=$match5;
preg_match_all("/\s-([A-Za-z])\s+\"([^\s-\"]+)\"+\s?/",$match[2],$match6,PREG_SET_ORDER);
$array['b-']=$match6;
preg_match_all("/\s-([A-Za-z])\s+'([^\s-']+)'+\s?/",$match[2],$match7,PREG_SET_ORDER);
$array['c-']=$match7;
// -a
preg_match_all("/\-([A-Za-z]+)\s[^\"']/",$match[2],$match8,PREG_SET_ORDER);
$array['a']=$match8;
//preg_match_all("/\s-([A-Za-z]{2,})\s*[-|$]?/",$match[2],$match9,PREG_SET_ORDER);
//preg_match_all("/([A-Za-z])/", join(" ",$match9[0]), $array['b'],PREG_SET_ORDER);
//echo join(" ",$match9[0]);
//print_r($match9);
//preg_match_all("/(-([A-Za-z]{1})*)\s-?/",$match[2],$match5,PREG_SET_ORDER);
//$array['p0']=$match5;
return $array;
}
//print_r($test_array);
$new_array = array();
foreach($test_array as $ta)
{
$new_array[] = parse_cm($ta);
}
print_r($new_array);
//var_dump($new_array);
?>
"b--" - ищет по типу: --user='root' (реализовано)
"c--" - ищет по типу: --user=root (реализовано)
"a-" - ищет по типу: -u "root" (реализовано)
"b-" - ищет по типу: -u 'root' (реализовано)
"c-" - ищет по типу: -u root (реализовано)
"a" - ищет по типу: -a -b (не реализовано)
"b" - ищет по типу: -abc (не реализовано)
Так вот не знаю как быть со следующими двумя. Помогите плиз!