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
Форумы портала PHP.SU :: Версия для печати :: Помогите с регуляркой
Форумы портала PHP.SU » PHP » Регулярные выражения » Помогите с регуляркой

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

1. ander - 09 Марта, 2021 - 06:58:17 - перейти к сообщению
Здравствуйте.
Потребовалось вытащить текст из страницы котировок:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <div class="top bold inlineblock">
  2.    <span class="arial_26 inlineblock pid-8222-last" id="last_last" dir="ltr">123,81</span>
  3.      <span class="arial_20 greenFont   pid-8222-pc" dir="ltr">+0,40</span>
  4.       <span dir="rtl">&nbsp;&nbsp;</span>
  5.     <span class="arial_20 greenFont  pid-8222-pcp parentheses" dir="ltr">+0,32%</span>
  6. </div>


вытащить нужно два значения а именно - 123,81
и еще +0,32%

Пытался делать регуляркой, паттерном вида:
!<div class=\"top bold.+<span.+dir=\"ltr\">(.+?)</span>.+</div>?!siu

Но ничего не нашел, в общем сильно не пинайте, в регулярках не очень разбираюсь, хоть и время от времени сталкиваюсь. Помогите пж! Растерялся
2. Строитель - 09 Марта, 2021 - 13:02:35 - перейти к сообщению
ander, см. демо https://regex101[dot]com/r/UbgAFb/1
Шаблон:
CODE (php):
скопировать код в буфер обмена
  1. <span[^>]+dir="ltr">([^<]+)</span>
3. Vladimir Kheifets - 09 Марта, 2021 - 13:08:26 - перейти к сообщению
ander пишет:
Здравствуйте.
Потребовалось вытащить текст из страницы котировок:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <div class="top bold inlineblock">
  2.    <span class="arial_26 inlineblock pid-8222-last" id="last_last" dir="ltr">123,81</span>
  3.      <span class="arial_20 greenFont   pid-8222-pc" dir="ltr">+0,40</span>
  4.       <span dir="rtl">&nbsp;&nbsp;</span>
  5.     <span class="arial_20 greenFont  pid-8222-pcp parentheses" dir="ltr">+0,32%</span>
  6. </div>

вытащить нужно два значения а именно - 123,81
и еще +0,32%

Добрый день!
Если Вы в регулярках не очень разбираетесь, попробуйте таких случаях
применять простенькую функцию
Спойлер (Отобразить)
Удачи!
4. Строитель - 09 Марта, 2021 - 13:12:38 - перейти к сообщению
Vladimir Kheifets пишет:
Если Вы в регулярках не очень разбираетесь
То самое время начинать Закатив глазки

ander, прочитайте один раз книгу "Регулярные выражения" Джеффри Фридла, и вопросы по регуляркам станут не актуальными.
5. ander - 09 Марта, 2021 - 17:52:44 - перейти к сообщению
Спасибо всем кто ответил, буду пробовать!
6. Invis1ble - 09 Июля, 2021 - 20:46:12 - перейти к сообщению
Я бы в принципе не рекомендовал парсить html с помощью регулярок, в php есть штатные средства для работы с XML.
На худой конец можно взять тот же simplehtmldom.
7. don.bidon - 10 Июля, 2021 - 16:47:18 - перейти к сообщению
Invis1ble пишет:
Я бы в принципе не рекомендовал парсить html с помощью регулярок, в php есть штатные средства для работы с XML.
На худой конец можно взять тот же simplehtmldom.

Вот только HTML может быть не валидным XML, и весь парс накроется тазиком (
8. Invis1ble - 11 Июля, 2021 - 00:50:30 - перейти к сообщению
don.bidon пишет:
Invis1ble пишет:
Я бы в принципе не рекомендовал парсить html с помощью регулярок, в php есть штатные средства для работы с XML.
На худой конец можно взять тот же simplehtmldom.

Вот только HTML может быть не валидным XML, и весь парс накроется тазиком (

Как раз для случая невалидного XML я и написал про simplehtmldom.

 

Powered by ExBB FM 1.0 RC1