Распарсить регуляркой таблицу.

seosniks
На сайте с 13.08.2007
Offline
379
450

Всем доброй ночи.

Подскажите пожалуйста как мне забрать регуляркой данные в таблице.

preg_match("/<td width=\'10%  class=\"(green)\" data=.*?>(.*?)%<\/td>/is",$str,$ok);

В таблице попадается класс class="green" , class="red" Так же может вообще не быть класса.

Необходимо проверять какой цвет у класса и забирать его, если класс отсутствует то забирать без класса.

S
На сайте с 30.09.2016
Offline
459
#1

Ваши данные будут в массиве $ok.

Или Вас что-то другое интересует? Из стартпоста это не очень понятно.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
M
На сайте с 04.10.2011
Offline
90
#2

seosniks, Сорри, но Вы хотите получить код персера или таки помощь? Ваша регулярка (уже выше писали) вернёт всё в $ok

Сдается, обращаться скайп avdesk-it-kmm Верстка, кодинг - контакты в профиле... VPS от 5€ (https://gmhost.com.ua/?partner=10255)
seosniks
На сайте с 13.08.2007
Offline
379
#3
mmkulikov:
seosniks, Сорри, но Вы хотите получить код персера или таки помощь? Ваша регулярка (уже выше писали) вернёт всё в $ok

Код у меня есть.

Я не могу выбрать парсером ячейки где отсутствует класс

Вот таблица.

<td data='0'>100</td>

<td data='0' class="red">500</td>

<td data='0' class="green">700</td>

Забираем green и red.

preg_match("/<td width=\'10% class=\"(green|red)\" data=.*?>(.*?)%<\/td>/is",$str,$ok);

Как получить значения red, green, 100,500,700?

M
На сайте с 04.10.2011
Offline
90
#4

seosniks, red, green в $ok[1] 100,500,700 в $ok[2]

---------- Добавлено 29.09.2018 в 22:15 ----------

seosniks:
Я не могу выбрать парсером ячейки где отсутствует класс

Так Ваша регулярка под это и не "заточена"

---------- Добавлено 29.09.2018 в 22:16 ----------

seosniks, Проще достать второй регуляркой, но можно вывернуться и одной, вроде как на вскидку

seosniks
На сайте с 13.08.2007
Offline
379
#5
mmkulikov:
seosniks, red, green в $ok[1] 100,500,700 в $ok[2]

---------- Добавлено 29.09.2018 в 22:15 ----------


Так Ваша регулярка под это и не "заточена"

---------- Добавлено 29.09.2018 в 22:16 ----------

seosniks, Проще достать второй регуляркой, но можно вывернуться и одной, вроде как на вскидку

Одной можно, только правильно составить нужно шаблон, не докумекаю.

Условие должно быть, выбрать red|green если есть класс. Если класса нет выбрать только то что между

<td.*?>и </td>

M
На сайте с 04.10.2011
Offline
90
#6

seosniks, https://yadi.sk/i/_vnb4hZPSUsNZg где-то так

seosniks
На сайте с 13.08.2007
Offline
379
#7

 preg_match_all("/<td.*?class=\"(.*?)\" data=.*?>(.*?)<\/td>/is",  $res_f,$ok);


print_r($ok);

Array

(
[0] => Array
(
[0] => <td class="green" data='1'>+100</td>
[1] => <td class="green" data='2'>500</td>
[2] => <td data='3'>700</td>
</tr>
<tr>
<td class="red" data='4'>900</td>
)

[1] => Array
(
[0] => green
[1] => green
[2] => red
)

[2] => Array
(
[0] => +100
[1] => 500
[2] => 900
)

)

как еще выбрать 700 из [2] => <td data='3'>700</td> ?

M
На сайте с 04.10.2011
Offline
90
#8
seosniks:
как еще выбрать 700 из [2] => <td data='3'>700</td> ?

Я Вам выше ссылку на скрин с регуляркой и выборкой дал...

Bitman
На сайте с 05.07.2009
Offline
112
#9

оно и есть →

[2] => Array

(

[0] => +100

[1] => 500

[2] => 900

)

Северный лес (https://euro-vagonka.by) DREW (https://drew.by) AvtoDrive (https://avtodrive.by)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий