Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите улучшить регулярку preg_match_all php по поиску цены

Страниц (1): [1]
 

1. kvins - 24 Июля, 2018 - 19:11:40 - перейти к сообщению
Есть куча страниц с ценами штук 60

Задача всех их найти и умножить цены

Сделал скрипт все ок, но удовлетворяет 80% из всех страниц

все цены в таблицах и ячейках <td>

Если подсвечивает желтым значит нашел и заменил пример [img]https://clip2net.com/clip/m189696/7f17a-clip-40kb.png?nocache=1[/img]

цена определяется так, в ячейке начинается с только с цифры или пробела и в ячейке должна быть буква р сразу после цифр

написал такой скрипт

$arrn[1] = '<td>(.*)р(\.*)(\**)(\s*)</td>';


foreach($arrn as $arrn2) {

preg_match_all('#'.$arrn2.'#Ui', $texttochange, $textedit);

}

попадаются цены такие
8 417,00р
8 417,00р.
8 417,00р.*
т.е в конце или р или р. или р.*

эти все работают, но мой скрипт не проверяет что начало идет с цифры или пробела, но вроде пронесло и косяка нету.

проблемы еще с товарами где в тегах есть класы или атрибуты к примеру <td align="center">900,00р.</td> или что то еще
а в моем скрипте указан четко <td>


есть еще страницы с ценами 8 417,00руб или 8 417,00руб. но это очень редко
2. Строитель - 25 Июля, 2018 - 01:03:58 - перейти к сообщению
kvins
Спойлер (Отобразить)
3. kvins - 25 Июля, 2018 - 07:33:38 - перейти к сообщению
Строитель пишет:
kvins
Спойлер (Отобразить)


Спасибо за подсказку с td но ваш скрипт не учитывает в буквы р или (руб.) жестко, в таблице есть просто данные к примеру ширина или вес продукта и они случайно попадут к вам в скрипт.
Вот пример не совсем удачный, но я видел страницы состоящие только из цифр и тольру р. или р на конце помогала найти и вытащить только цифры для замены

[img]https://clip2net[dot]com/s/3VEsWaV [/img]
4. Строитель - 25 Июля, 2018 - 15:44:25 - перейти к сообщению
kvins, попробуйте такой вариант:
Спойлер (Отобразить)
Подходит для:

8 417,00р
8 417,00р.
8 417,00р.*

8 417р
8 417р.
8 417р.*

17р
84р.
41р.*

 

Powered by ExBB FM 1.0 RC1