Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсер конфига

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Грачи прилетели
Отправлено: 24 Декабря, 2022 - 08:33:52
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Добрый день!
Споткнулся в парсере, прошу помощи советом

Имеется конфиг, в котором перечисляются в разных секциях сервера в таком формате

CODE (htmlphp):
скопировать код в буфер обмена
  1. [section1]
  2. kt1.domen.local
  3. p01.domen.local
  4.  
  5.  
  6. [section2]
  7. jv1.domen.local
  8. s03.domen.local
  9. s[01:19].domen.local
  10. s[34:59].domen.local
  11.  


Файл нормально парсится и выгружаю нужные мне значения, но только в тех случаях, когда не упираюсь в запись диапазона серверов типа s[34:59].domen.local

т.е. мне необходимо делать проверку и если в строке встречается
условно [ЧИСЛО:ЧИСЛО].domen.local
строку преобразовывать в строки с перечислением каждого сервера в указанном диапазоне

Место где я получаю эту строку

PHP:
скопировать код в буфер обмена
  1.                
  2. {
  3.   $s_tmp=trim($s_tmp);
  4.   //echo $s_tmp."<br />";
  5. }
  6.  


Начинаю через регулярные выражения разбирать так

PHP:
скопировать код в буфер обмена
  1.  
  2. {
  3.   $s_tmp=trim($s_tmp);
  4.  
  5.   if ( preg_match("/\[([0-9:]+)([0-9]+).+\]/",$s_tmp, $matches ) )
  6.   {
  7.     echo $matches[0]."<br />";
  8.   }
  9.   else
  10.   {
  11.     echo $s_tmp."<br />";
  12.   }
  13. }
  14.  


preg_match ( "/\[([0-9:]+)([0-9]+).+\]/" ... находит нужные строки, но как их преобразовать в диапазон построчно не могу разобраться.
Подтолкните, пожалуйста

(Отредактировано автором: 24 Декабря, 2022 - 08:38:54)

 
 Top
Vladimir Kheifets
Отправлено: 25 Декабря, 2022 - 11:31:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Грачи прилетели пишет:
Добрый день!
Споткнулся в парсере, прошу помощи советом

Имеется конфиг, в котором перечисляются в разных секциях сервера в таком формате
Файл нормально парсится и выгружаю нужные мне значения, но только в тех случаях, когда не упираюсь в запись диапазона серверов типа s[34:59].domen.local

... мне необходимо делать проверку и если в строке встречается
условно [ЧИСЛО:ЧИСЛО].domen.local
строку преобразовывать в строки с перечислением каждого сервера в указанном диапазоне


Добрый день!

Мне кажется, что быстрее будет находить эти строки используя strpos, а из найденных выковыривать числа, например, так
Спойлер (Отобразить)
Удачи!

(Отредактировано автором: 25 Декабря, 2022 - 11:33:29)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB