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
Форумы портала PHP.SU :: Версия для печати :: Парсер конфига
Форумы портала PHP.SU » » Вопросы новичков » Парсер конфига

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

1. Грачи прилетели - 24 Декабря, 2022 - 08:33:52 - перейти к сообщению
Добрый день!
Споткнулся в парсере, прошу помощи советом

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

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]+).+\]/" ... находит нужные строки, но как их преобразовать в диапазон построчно не могу разобраться.
Подтолкните, пожалуйста
2. Vladimir Kheifets - 25 Декабря, 2022 - 11:31:50 - перейти к сообщению
Грачи прилетели пишет:
Добрый день!
Споткнулся в парсере, прошу помощи советом

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

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


Добрый день!

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

 

Powered by ExBB FM 1.0 RC1