The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"PHP и регулярные выражения"
Отправлено jkl, 09-Июн-08 13:57 
Нашёл я нужную опцию, если правильно понял, то конечный вид выражения такой(хотя работает что с этой опцией, что без неё):

'/(?m)lease\s+[\d.]+\s+{[^}]+}/'

Если честно читал маны и видел все эти опции не раз, но чтобы собрать их именно в таком порядке...

После решения первого вопроса возникло ещё несколько :) .
Теперь нужно распарсить некоторые строки в каждом элементе массива. Например из такого вот куска

lease 192.168.100.163 {
  starts 1 2008/04/28 19:07:36;
  ends 4 2008/05/01 19:07:36;
  binding state active;
  next binding state free;
  hardware ethernet 00:1d:60:76:32:db;
  uid "\001\000\035`v2\333";
  client-hostname "philka";
}

нужно вынуть три строки, а именно:

1 lease 192.168.100.163 {
2 hardware ethernet 00:1d:60:76:32:db;
3 client-hostname "philka";

при чём на выходе по каждой строке должно получиться следующее:

1 192.168.100.163
2 00:1d:60:76:32:db
3 philka

Для чего это нужно? Эти данные будут загоняться в хтмл-форму <select> после этого будут пересылаться другому скрипту на выполнение.

Вот код который допустим вынимает ип-адрес:

$dhcp_file = implode( "", file( "dhcpd/dhcpd.leases" ) );
preg_match_all( '/lease\s+[\d.]+\s+{[^}]+}/', $dhcp_file, $out_main );

print ( "<select name=dhcp_ip_select>\n" );
print ( "<option value=\"-1\">\n" );
foreach ( $out_main as $out_main_lvl1 )
{
    foreach ( $out_main_lvl1 as $out_main_lvl2 )
    {
        preg_match_all( '/lease\s+[\d.]+\s+/', $out_main_lvl2, $out_ip );
        foreach ( $out_ip as $out_ip_lvl1 )
    {
        foreach ( $out_ip_lvl1 as $out_ip_lvl2 )
        {
            print ( "<option value=".$out_ip_lvl2.">".$out_ip_lvl2."\n" );
        }
        }
    }
}
print ( "</select>\n" );

Недостаток в том что на выходе получаю не только ип-адрес, но весь кусок строки вида "lease 192.168.100.163".

Если поможете правильно описать и эти куски, то буду весьма признателен :).

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру