[14:20:52] <zombah_>  добрый день всем
 [14:31:47] <zombah_>  stuw: а ты php имел когданить дело?
 [14:32:01] <stuw>  zombah_: немного имел )
 [14:33:03] <zombah_>  stuw: во подскажи есть там вот такая функция http://php.net/manual/en/function.preg-split.php
 [14:33:38] <zombah_>  пытаюсь ей сделать разделитель строки не просто символ а кусок регекспа
 [14:34:06] <zombah_>  нашел даже пример в интернете, но он уж больно замороченный http://stackoverflow.com/questions/19078048/split-a-complex-string-with-a-preg-split#19078937
 [14:34:53] <zombah_>  хочу вот такую строку порезать в аррей "TP_BB_CN_street123-router123.city123_Interface1/11/0/6_MN_1!123#-XH- Dwdm id 002991"
 [14:35:07] <stuw>  а разделителем что должно быть?
 [14:35:23] <zombah_>  вот тут как раз и заморочка
 [14:35:52] <zombah_>  хочу разрезать вот так 0=TP_BB_CN 1=street123-router123.city123_Interface1/11/0/6_MN_1!...
 [14:36:06] <zombah_>  но чтот не выходит пока
 [14:36:25] <zombah_>  максимум что вышло вот так preg_split('/(.*?_)/', $input, -1, PREG_SPLIT_DELIM_CAPTURE);
 [14:36:31] <zombah_>  но тут ересь получается
 [14:37:09] <zombah_>  не пойму почему то что матчиться в () дропается целиком, а если в [] то тогда каждый знак применяется
 [14:37:55] <zombah_>  но если разделителем просто _ то он конечно на 6 частей режет
 [14:38:27] <stuw>  хм, а TP_BB_CN всегда одинаковое значение или меняется?
 [14:38:45] <zombah_>  вот я пытаюсь изобразить такой регексп чтоб TP_[A-Z]+_[A-Z]+_ заматчить но и сохранить его самого как
 [14:39:23] <zombah_>  TP_ постоянное, а дальше варианции типа BB_CN CC_CS EL_AC и тп
 [14:39:35] <zombah_>  всегда апперкес и буквы по два
 [14:40:13] <zombah_>  а вот дальше до _MN_X! может быть что угодно кроме \s
 [14:40:14] <stuw>  не можно подчеркиванием бахнуть, а потом первые три соединить
 [14:41:15] <zombah_>  да я думал так, но найдя этот пример что выше из stack думал можно комплексно разделить как надо
 [14:41:19] <stuw>  я бы на preg_match посмотрел в твоем случае
 [14:41:38] <zombah_>  а он массив делает на выходе?
 [14:42:37] <zombah_>  а вот это переписать пытаюсь под свои реалии https://github.com/librenms/librenms/blob/master/includes/port-descr-parser.inc.php
 [14:42:52] <zombah_>  а они тут массив разбирают на запчасти по порядку
 [14:42:53] <stuw>  ну да, там можно даже отдельные куски выкусить.
 [14:43:10] <stuw>  5 сек
 [14:43:54] <zombah_>  у меня даже получилось в одном варианте сохранить TP_BB_CN_, но дальше ересь полная выходит
 [14:44:06] <zombah_>  preg_split('/^TP_[\[\A-Z\]+\_\[\A-Z\]+\_]/', $input, -1);
 [14:44:39] <zombah_>  если вот так делаю получается 0=TP_BB_CN_ а дальше куча пустых полей
 [14:46:48] <stuw>  preg_match("/(TP_[A-Z]{2}_[A-Z]{2})(.*MN_1!)(.*)/", "TP_BB_CN_street123-router123.city123_Interface1/11/0/6_MN_1!123#-XH- Dwdm id 002991", $matches);
 [14:46:48] <stuw>  print_r($matches)
 [14:46:55] <stuw>  так норм?
 [14:47:07] <zombah_>  счас попробую
 [14:48:05] <stuw>  3 блока. Первый - TP_[A-Z]{2}_[A-Z]{2}, второй - все до MN_1!, третий - все остальное
 [14:48:53] <zombah_>  так он на выходе выдает просто 1
 [14:49:25] <zombah_>  аа переменную забыл
 [14:49:50] <stuw>  там правда нулевой элемент - исходная строк, но думаю это можно побороть
 [14:50:14] <stuw>  можно второй блок переделать на [^!]*! - все, до восклицательного знака
 [14:50:19] <zombah_>  да нулевой все целиком а дальше норм
 [14:51:09] <stuw>  print_r(array_slice($matches, 1))
 [14:51:24] <zombah_>  stuw: кайф спасибо!
 [14:51:31] <stuw>  пожалуйста :)
 [14:56:29] <zombah_>  $array = preg_split('/(TP_[A-Z]{2}_[A-Z]{2})(.*MN_1!)(.*)/', $input, -1, PREG_SPLIT_DELIM_CAPTURE); вот так тоже почти только 0 и 4 пустые 8)
 [14:58:35] <stuw>  preg_split?
 [15:00:07] <stuw>  PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY
 [15:00:20] <zombah_>  ага я нашел его уже
 [15:00:24] <stuw>  а, он по сути сами делимитеры будет тоже выводить
 [15:01:34] <zombah_>  да тоже выходит норм