Перебрать таблицу

davyduck

Постоялец
Регистрация
18 Дек 2012
Сообщения
733
Реакции
186
Есть таблица

Код:
<td>Бренд</td>
<td><a class="margin-left-20" href="?action=listUnits&catalog=op1210&vehicleid=47960&params=&infoVI=40L0AHM45591&ssd=$HQwXcmQEeQJyfHtcUE8ARVnEg$">OPEL</a></td>
<td>Модель</td>
<td><a class="margin-left-20" href="?action=errUnits&catalog=op1210&vehicleid=47960&ams=&infoVI=40L0dfdff591&ssd=$HQwXdfdfdfdfdd
Хочу данные первой ячейки сделать ключем массива, а данные второй ячейчи - значением.
Как правильно получить значения с помощью регулярки?
Делал так -
Код:
preg_match_all('#<td>(.+?)</td>#s', $table, $keys);
Но в переменную $keys попадают и данные второй ячейки.

Посоветуйте что-нибудь
 

zabolots

Постоялец
Регистрация
11 Сен 2012
Сообщения
54
Реакции
22
То, что туда попадают все ячейки, не удивительно – нет никаких ограничивающих условий. Но вам так-то и нужны все – и первые (ключи) и вторые (значения). Один из вариантов – поместить все в массив (сейчас у вас это $keys) и после средствами php обработать его, как нужно.
 

davyduck

Постоялец
Регистрация
18 Дек 2012
Сообщения
733
Реакции
186
То, что туда попадают все ячейки, не удивительно – нет никаких ограничивающих условий. Но вам так-то и нужны все – и первые (ключи) и вторые (значения). Один из вариантов – поместить все в массив (сейчас у вас это $keys) и после средствами php обработать его, как нужно.
А можно как-то задать правила в регулярке, что если нету <a></a> - попадало в $keys, а если есть <a></a> - попадало в $value . Проблема в том, что количество таких ячеек не известно, для каждой марки авто, модели приходят разные значения. И если все загнать как у меня, не совсем удобно работать
<-------------- добавлено через 1387 сек. -------------->
preg_match_all('/<td><a.+>(.+)\/a><\/td>/s', $table, $values); // значения
preg_match_all('/<td>([^<].+)<\/td>/s', $table, $keys); // ключи
В $values попадает такое

Код:
Array
(
    [0] => Array
        (
            [0] => OPEL
                   
                                                               
                        Каталог
                        op1210
                   
                                                               
                        Название
                        ZAFIRA-B
                   
                                                                                           
                        ID транспортного средства
                        47960
 

zabolots

Постоялец
Регистрация
11 Сен 2012
Сообщения
54
Реакции
22
А можно как-то задать правила в регулярке, что если нету <a></a> - попадало в $keys, а если есть <a></a> - попадало в $value .
Можно двумя выражениями, например так:
PHP:
preg_match_all('/<td><a.+>(.+)\/a><\/td>/s', $table, $values); // значения 
preg_match_all('/<td>([^<].+)<\/td>/s', $table, $keys); // ключи
<-------------- добавлено через 618 сек. -------------->
ну, наверное это соответствует содержимому всей таблицы? Вы же только ее начало привели в первом посте, там таких полей нет.
 
Сверху