<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: PHP и регулярные выражения</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/5803.html</link>
    <description>Доброго времени суток уважаемый all.&lt;br&gt;&lt;br&gt;Возникла необходимость распарсить файл лиза dhcp.&lt;br&gt;&lt;br&gt;Вид он имеет приблизительно такой:&lt;br&gt;&lt;br&gt;lease 192.168.100.91 &#123;&lt;br&gt;  starts 1 2008/04/28 11:42:29;&lt;br&gt;  ends 4 2008/05/01 11:42:29;&lt;br&gt;  binding state active;&lt;br&gt;  next binding state free;&lt;br&gt;  hardware ethernet 00:1b:38:6f:67:b1;&lt;br&gt;  uid &quot;&#092;001&#092;000&#092;0338og&#092;261&quot;;&lt;br&gt;  client-hostname &quot;Marlou&quot;;&lt;br&gt;&#125;&lt;br&gt;lease 192.168.100.163 &#123;&lt;br&gt;  starts 1 2008/04/28 19:07:36;&lt;br&gt;  ends 4 2008/05/01 19:07:36;&lt;br&gt;  binding state active;&lt;br&gt;  next binding state free;&lt;br&gt;  hardware ethernet 00:1d:60:76:32:db;&lt;br&gt;  uid &quot;&#092;001&#092;000&#092;035&#096;v2&#092;333&quot;;&lt;br&gt;  client-hostname &quot;philka&quot;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Каждый из таких наборов ( lease 192.168.100.163 &#123;...&#125; ) нужно передать в массив, из которого потом будут извлекаться для дальнейшей обработки.&lt;br&gt;&lt;br&gt;В результате поисков был сделан вот такой вот код:&lt;br&gt;&amp;lt;?php&lt;br&gt;$menu_string = implode( &quot;&quot;, file( &quot;dhcpd/dhcpd.leases&quot; ) );&lt;br&gt;preg_match_all( &apos;/lease.*&#092;n.*/&apos;, $menu_string, $out );&lt;br&gt;print_r( $out );&lt;br&gt;?&amp;gt;&lt;br&gt;&lt;br&gt;Код сделан для тестов, поэтому просьба не судить строго, с</description>

<item>
    <title>PHP и регулярные выражения (jkl)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/5803.html#6</link>
    <pubDate>Mon, 09 Jun 2008 11:04:15 GMT</pubDate>
    <description>Первые два выражения сделал, не совсем красиво, но работает:&lt;br&gt;&lt;br&gt;для ип-адреса /&#092;s+&#092;d+&#092;.&#092;d+&#092;.&#092;d+&#092;.&#092;d+/&lt;br&gt;для мак-адреса /&#092;s+&#091;0-h&#093;&#091;0-h&#093;&#092;:&#091;0-h&#093;&#091;0-h&#093;&#092;:&#091;0-h&#093;&#091;0-h&#093;&#092;:&#091;0-h&#093;&#091;0-h&#093;&#092;:&#091;0-h&#093;&#091;0-h&#093;&#092;:&#091;0-h&#093;&#091;0-h&#093;/&lt;br&gt;&lt;br&gt;С именем хоста сложнее, не за что зацепиться, всё портит вот эта строка:&lt;br&gt;&lt;br&gt;uid &quot;&#092;001&#092;000&#092;035&#096;v2&#092;333&quot;;&lt;br&gt;&lt;br&gt;по виду похожа на:&lt;br&gt;&lt;br&gt;client-hostname &quot;philka&quot;;&lt;br&gt;</description>
</item>

<item>
    <title>PHP и регулярные выражения (jkl)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/5803.html#5</link>
    <pubDate>Mon, 09 Jun 2008 09:57:59 GMT</pubDate>
    <description>Нашёл я нужную опцию, если правильно понял, то конечный вид выражения такой(хотя работает что с этой опцией, что без неё):&lt;br&gt;&lt;br&gt;&apos;/(?m)lease&#092;s+&#091;&#092;d.&#093;+&#092;s+&#123;&#091;^&#125;&#093;+&#125;/&apos;&lt;br&gt;&lt;br&gt;Если честно читал маны и видел все эти опции не раз, но чтобы собрать их именно в таком порядке...&lt;br&gt;&lt;br&gt;После решения первого вопроса возникло ещё несколько :) .&lt;br&gt;Теперь нужно распарсить некоторые строки в каждом элементе массива. Например из такого вот куска&lt;br&gt;&lt;br&gt;lease 192.168.100.163 &#123;&lt;br&gt;  starts 1 2008/04/28 19:07:36;&lt;br&gt;  ends 4 2008/05/01 19:07:36;&lt;br&gt;  binding state active;&lt;br&gt;  next binding state free;&lt;br&gt;  hardware ethernet 00:1d:60:76:32:db;&lt;br&gt;  uid &quot;&#092;001&#092;000&#092;035&#096;v2&#092;333&quot;;&lt;br&gt;  client-hostname &quot;philka&quot;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;нужно вынуть три строки, а именно:&lt;br&gt;&lt;br&gt;1 lease 192.168.100.163 &#123;&lt;br&gt;2 hardware ethernet 00:1d:60:76:32:db;&lt;br&gt;3 client-hostname &quot;philka&quot;;&lt;br&gt;&lt;br&gt;при чём на выходе по каждой строке должно получиться следующее:&lt;br&gt;&lt;br&gt;1 192.168.100.163&lt;br&gt;2 00:1d:60:76:32:db&lt;br&gt;3 philka&lt;br&gt;&lt;br&gt;Для чего это нужно? Эти данные будут загоняться в хтмл-форму &amp;lt;select&amp;gt; после этого будут пересылаться</description>
</item>

<item>
    <title>PHP и регулярные выражения (angra)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/5803.html#4</link>
    <pubDate>Sun, 08 Jun 2008 18:06:01 GMT</pubDate>
    <description>А я ведь предупреждал :)&lt;br&gt;Связано с отсутствием опции аналогичной m(multiline) в перле. В результате ^ срабатывает на начало скаляра, а не на каждую строчку(line) в нем. Не помню я как в пыхе выставляются m,s,i,x итд, посмотрите сами в мануале. &lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>PHP и регулярные выражения (jkl)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/5803.html#3</link>
    <pubDate>Sun, 08 Jun 2008 15:45:32 GMT</pubDate>
    <description>Получилось таки.&lt;br&gt;&lt;br&gt;Убрал из регулярного выражения символ ^ из /^lease&#092;s+&#091;&#092;d.&#093;+&#092;s+&#123;&#091;^&#125;&#093;+&#125;/ . В результате идёт поиск по всему файлу. С чем связано не могу понять.&lt;br&gt;&lt;br&gt;Возможно есть мысли с чем это связано, не хочется так и остаться без понимания того как это работает :) .&lt;br&gt;&lt;br&gt;Ещё раз спасибо. В основном вопрос снят.&lt;br&gt;</description>
</item>

<item>
    <title>PHP и регулярные выражения (jkl)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/5803.html#2</link>
    <pubDate>Sun, 08 Jun 2008 14:56:07 GMT</pubDate>
    <description>Спасибо за ответ.&lt;br&gt;&lt;br&gt;Вообщем попробовал, результат есть, но как я понял в массив помещается только первый набор данных, дальше похоже проверка не идёт. Либо как написали нужна дополнительная опция.&lt;br&gt;&lt;br&gt;Если есть ещё идеи, буду признателен за помощь.&lt;br&gt;</description>
</item>

<item>
    <title>PHP и регулярные выражения (angra)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/5803.html#1</link>
    <pubDate>Sat, 07 Jun 2008 17:44:20 GMT</pubDate>
    <description>/^lease&#092;s+&#091;&#092;d.&#093;+&#092;s+&#123;&#091;^&#125;&#093;+&#125;/&lt;br&gt;^lease - слово lease с начала строки&lt;br&gt;&#092;s - пробельныq символ&lt;br&gt;+ повторение предыдущего символа как минимум один раз &lt;br&gt;&#091;d.&#093; - класс символов состоящий из цифр и .&lt;br&gt;&#091;^&#125;&#093; -  класс символов состоящий из всех возможных, кроме &#125;&lt;br&gt;&lt;br&gt;Также стоит посмотреть в мане как php будет работать с многострочными скалярами, возможно понадобится дополнительная опция. &lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
