Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Помогите с регуляркой


Автор: Astraller 29.2.2008, 14:06
Есть текст, довольно большой. Часть его, довольно хитрая таблица.
Вот её упрощенный вариант:
Код

<table>
<tr>
    <td>
        <!-- название --> Значение
    </td>
...
</tr>
</table>

В идеале хотелось бы получить массив
Код

Array(
[0]=Array(
         [0]=название
         [1]=значение
       )
...
)


Регулярку составить для меня проблемы нет 
"|<td>.*<!-- (.*) -->(.*)</td>|i"
А вот какой функцией и как собрать массив - не знаю.

Автор: Staind 29.2.2008, 14:30
Для рег. выр: http://ru2.php.net/manual/ru/function.preg-grep.php
Без рег. выр: http://ru2.php.net/manual/ru/function.explode.php

Автор: Astraller 29.2.2008, 14:34
Цитата(Staind @  29.2.2008,  14:30 Найти цитируемый пост)
Для рег. выр: http://ru2.php.net/manual/ru/function.preg-grep.php

Читал. Не понимаю как получить искомый вариант.
Цитата

Без рег. выр: http://ru2.php.net/manual/ru/function.explode.php

Не вижу возможности использовать.

Автор: flashaa 29.2.2008, 14:46
Astraller, у ф-ций по работе с регулярными выражениями в PHP последним параметром идет flags - это комбинация некоторых констант, обозначающих ньюансы работы ф-ций. Вам нужен PREG_PATTERN_ORDER.

Цитата

 PREG_SET_ORDER

    Orders results so that $matches[0] is an array of first set of matches, $matches[1] is an array of second set of matches, and so on.
    <?php
    preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
        "<b>example: </b><div align=\"left\">this is a test</div>",
        $out, PREG_SET_ORDER);
    echo $out[0][0] . ", " . $out[0][1] . "\n";
    echo $out[1][0] . ", " . $out[1][1] . "\n";
    ?>


Автор: Astraller 29.2.2008, 15:12
flashaa, спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)