Вниз  PHP и мелкие вопросы
- 7.11.2013 / 19:21
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
:stena:
Как достать значения
<td>USD</td> <td class="align_left">Доллар США</td> <td>7.9930</td> </tr>
  1. /\<td\>(?P<currency>\w+)(.*)left\"\>(?P<name>\w+)\<\/td\> \<td\>(?P<value>\w+)\<\/td\>/
Я минус один в регулярках
Сумел только первое значение достать:
  1. /\<td\>(?P<currency>\w+).*/

UPD: достал первое и последнее значения:
  1. /<td>(?P<currency>\w+).*>(?P<value>(\d+(\.\d+)?))/
а среднее, блин!?!!
__________________
 let live

Изменено aNNiMON (7.11 / 19:42) (всего 5 раз)
- 7.11.2013 / 19:46
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Вопрос закрыт, набыдлокодил. Всем спасибо за помощь.
  1. /<td>(?P<currency>\w+).*>(?P<name>(.*))<\/td> <td>(?P<value>(\d+(\.\d+)?))<\/td>/

__________________
 let live
- 7.11.2013 / 20:02
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Нет, вопрос не закрыт. В preg_match online всё пашет, а в php нет.
__________________
 let live
- 7.11.2013 / 20:16
Helltar
  Пользователь

Helltar 
Сейчас: Offline
aNNiMON, :biggrin:

  1. $s = '<td>USD</td> <td class="align_left">Доллар США</td> <td>7.9930</td> </tr>';
  2.  
  3. preg_match('/<td>(.*?)<\/td> <td class="align_left">(.*?)<\/td> <td>(.*?)<\/td> <\/tr>/is', $s, $matches);
  4.  
  5. echo $matches[1] . ' | ' . $matches[2] . ' | ' . $matches[3];

- 7.11.2013 / 20:25
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Helltar, для конкретного примера работает, но у меня $s из массива достаётся, а массив из страницы и вот так уже не работает.
И вообще, если тупо указать $s = ..строка.., тогда и моя регулярка пашет, а вот с массивами нет(
Может дело в том, что $html = mb_convert_encoding($html, "UTF-8", "Windows-1251"); ?

Всё немного хуже. Моя строка выглядит так:
  1.             <td>EUR</td>
  2.             <td class="align_left">Евро</td>
  3.             <td>10.6826</td>
  4.         </tr>

__________________
 let live

Изменено aNNiMON (7.11 / 20:31) (всего 2 раза)
- 7.11.2013 / 20:46
web_demon
  Супервизор

web_demon 
Сейчас: Offline
aNNiMON, ну если ты передаешь в функцию массив, то работать точно не будет.
И кодировку, да, проверить стоит, плюс если в регулярках если юзаешь юникод, нужно использовать модификатор u:
'/<td>(.*?)<\/td> <td class="align_left">(.*?)<\/td> <td>(.*?)<\/td> <\/tr>/isu'

Изменено web_demon (7.11 / 20:47) (всего 3 раза)
- 7.11.2013 / 20:48
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
web_demon, Евпатий Коловрат :facepalm: Дописал /isu - заработало :facepalm:
Спасибо всем!
А что делают эти модификаторы?
__________________
 let live
- 7.11.2013 / 20:55
web_demon
  Супервизор

web_demon 
Сейчас: Offline
aNNiMON, http://myrusakov.ru/php-regexp-mod.html
Почитай. Плюс еще u (маленькое). Так как в пыхе херовая поддержка юникода, то нужно все делать через жопу при работе со строками в utf-8, поэтому и указываем этот модификатор.
- 12.11.2013 / 20:55
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Как установить длину сессии? И какую лучше всего поставить?
__________________
 let live
- 12.11.2013 / 21:12
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
__________________
 знает толк
Наверх  Всего сообщений: 4740
Фильтровать сообщения
Поиск по теме
Файлы топика (129)