[помощь]php
Решил на досуге подучить php , взялся с примера скрипта l2top. Наткнулся на функции strpos и substr , для чего они нужны я в принципе понял , но в одном так и не разберусь... Вот пример строк :
$pdata=(substr($l2top,(strpos($l2top,'сервер:<br></th>')+16),strlen($l2top)));
$data=(substr($pdata,(strpos($pdata,'</tr>')+6),(strpos($pdata,'</table>')-22)));
$data=(substr($data,1,strpos($data,'</table>')-8));
$nums=substr_count($data,'<tr>');
В первой строке как я понимаю начинаеться "тело движение" после найденных строк "Сервер:<br></th>" далее как я понимаю число 16 означает отступ (те 16 знаков - номер в списке и ип) далее мы получаем длинну строки(вот тут я чуть чуть не понимаю зачем..). Вторая строчка подгружает первую и добавляет 6 знаков (это понятно - время) , а вот второе -22 - это что и куда ?) Третью строчку вообще не понимаю что она делает , понятно тока что закрывает выполнение чтения с таблицы , но опять же таки что означают цифры 1 и -8. 4 строка видимо выводит полученное.
В общем вопросы думаю ясны , очень надеюсь на Вашу помощь. Строго не судить , я в пхп почти не рублю , учусь вот таким вот макаром...
— La2Psy.ru [ADM]Wh1tePower...
В первой строчке, мы находим в строке вхождение "Сервер:<br></th>", отсупаем 16 символов и записываем в переменную $pdata остаток строки. А длину строки получаем для того чтобы вырезать до конца (см. параметры функции substr).
Т.е. была, например строчка: "1234567 бла-бла-бла Сервер:<br></th>[еще_16_символов], а это продолжение строки"
Станет ", а это продолжение строки".
Все однотипные, читай ниже по ссылкам описание этих функций и я думаю все станет ясно.
Принцип работы понял , но так и не понял откуда вычитаеться 22... Из самого начала этой строки? То есть "1 ххх.ххх.ххх.ххх 14:00:00 19.01.09 Myxaxa" ? Из неё вычитаем 22 остаёться дата и ник , далее удаляеться видимо дата и записываеться только ник :Р Я прав?
— La2Psy.ru [ADM]Wh1tePower...
Зачем вообще что то отступать?о0 если парсить можно сразу...
там же вид такой:
<td>9</td>
<td>XXX.XXX.XXX.XXX</td>
<td>19:07:21 19.01.09</td>
<td> </td>
<td>fire-Kurik</td>
</tr>
а вот парсер:
preg_match_all('#<td>[0-9]{1,2}</td>\s+<td>([X]{3}\.[X]{3}\.[X]{3}\.[X]{3})</td>\s+<td>([0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\s+[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2})</td>\s+<td> </td>\s+<td>([a-zA-Z0-9 ]{0,})#',$page,$matches)
хотя эт кому как удобне..
— FoBOSS
Мне нужно чтоб не парсило , мне нужно в этой байде разобраться , написал же сверху что учусь и разбираю что к чему. И ещё вопросик , чтоб воспринимало все буквы и знаки нужно писать [\s-] так ?
— La2Psy.ru [ADM]Wh1tePower...
нет, \s - это регулярное выражение обозначающее пробел или перенос cтроки.
вот почитай:
_http://phpclub.ru/detail/article/regexp_1
_http://phpclub.ru/detail/article/regexp_2
— FoBOSS
А на вопрос то ответить можно ?) Я правильно всё понял? Я про второй пост свой :Р
— La2Psy.ru [ADM]Wh1tePower...
тебе же ответили)))
вот цитирую: "нет, \s - это регулярное выражение обозначающее пробел или перенос cтроки."
а вообще спасибо что поднял этот вопрос))
— 15
Да я не про этот вопрос , а про то что правильно я понял как парсинг там работает или нет
— La2Psy.ru [ADM]Wh1tePower...
Rem000, позволь спросить.
А энто ты через чего такой регэксп сгенерил? O_o
Прям тютелька-в-тютельку, ну не руками-же писал всетаки? )
— Ålderdom - ingen glädje..
А энто ты через чего такой регэксп сгенерил? O_o
Прям тютелька-в-тютельку, ну не руками-же писал всетаки? )
руками
не интерестно, да? XD
— FoBOSS
Вот это напомнило мне софтовую генерацию.
Ну ты просто жжошь...
Чем не проще было сделать как " XXX\.XXX\.XXX\.XXX " ?
Если строка будет типа "Pipec" ты сделаешь ее так-же? [Pp]{1}[Ii]{1}[Pp]{1}...?
Ей богу, не понимаю я тебя
Деоптимизация работы php #1, на баш чтоли отправить
— Ålderdom - ingen glädje..





