Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите улучшить регулярку preg_match_all php по поиску цены

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
kvins
Отправлено: 24 Июля, 2018 - 19:11:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Есть куча страниц с ценами штук 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руб. но это очень редко

(Отредактировано автором: 24 Июля, 2018 - 19:13:14)



-----
тута
 
 Top
Строитель
Отправлено: 25 Июля, 2018 - 01:03:58
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




kvins
Спойлер (Отобразить)
 
 Top
kvins
Отправлено: 25 Июля, 2018 - 07:33:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Строитель пишет:
kvins
Спойлер (Отобразить)


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

[img]https://clip2net[dot]com/s/3VEsWaV [/img]


-----
тута
 
 Top
Строитель
Отправлено: 25 Июля, 2018 - 15:44:25
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




kvins, попробуйте такой вариант:
Спойлер (Отобразить)
Подходит для:

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

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

17р
84р.
41р.*

(Отредактировано автором: 25 Июля, 2018 - 16:25:17)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB