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 :: Сложная регулярка

 PHP.SU

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


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

> Описание: не могу сообразить
V2oD2o
Отправлено: 20 Июня, 2013 - 08:07:19
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Нояб. 2010  


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




Всем доброго дня, в очередной раз не могу разобраться с регулярками..

элементарные - научился, но тут надо посложнее.


есть три регулярки:
PHP:
скопировать код в буфер обмена
  1. preg_match_all("/<tr class=''>\s+<td>(.*)<\/td>/isU", $content, $matches, PREG_PATTERN_ORDER);
  2. preg_match_all("/<td nowrap>(.*)<\/td>/isU", $content, $matches2, PREG_PATTERN_ORDER);
  3. preg_match_all("/<td class=\"price\" nowrap>(.*)<\/td>/isU", $content, $matches3, PREG_PATTERN_ORDER);
  4.  


исходник $content:
<tr class=''>
<td>
LPR
</td>
<td nowrap>
07170
</td>
<td class="price" nowrap>
496,40
</td>
<tr>


на выходе имеем:
LPR 07170 496,40

как это сделать одной регуляркой, соблюдая очередность поиска?
нашли LPR -> ищем 07170 -> ищем 496,40

(Отредактировано автором: 20 Июня, 2013 - 08:32:05)

 
 Top
DelphinPRO
Отправлено: 20 Июня, 2013 - 08:35:47
Post Id



Активный участник


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


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




PHP:
скопировать код в буфер обмена
  1. preg_match_all("/<tr class=''>\s+<td>(.*)<\/td>\s*<td nowrap>(.*)<\/td>\s*<td class=\"price\" nowrap>(.*)<\/td>/isU", $content, $matches, PREG_PATTERN_ORDER);
?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
V2oD2o
Отправлено: 20 Июня, 2013 - 08:39:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Нояб. 2010  


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




пробовал, пустой результат..

склоняюсь уже к:
PHP:
скопировать код в буфер обмена
  1. preg_match_all("/<tr class=''>(.*)<\/tr>/isU", $content, $matches, PREG_PATTERN_ORDER);


и разбору в ручную
 
 Top
armancho7777777 Супермодератор
Отправлено: 20 Июня, 2013 - 08:41:04
Post Id



Активный участник


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $sPattern = "/" .
  3. "<tr class=''>\s+<td>\s*(?P<name>[\w,]+)\s*<\/td>.*" .
  4. "<td nowrap>\s*(?P<num>[\w,]+)\s*<\/td>.*" .
  5. "<td class=\"price\" nowrap>\s*(?P<price>[\w,]+)\s*<\/td>" .
  6. "/isU";
  7.  
  8. $rgData = array();
  9.  
  10. if(preg_match_all($sPattern, $str, $rgMatches))
  11. {
  12.         $rgData = array(
  13.                 'name' => $rgMatches['name'],
  14.                 'num' => $rgMatches['num'],
  15.                 'price' => $rgMatches['price']
  16.         );     
  17. }
  18.  
  19. print_r($rgData);
  20.  
 
 Top
nerv
Отправлено: 22 Июня, 2013 - 10:59:28
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1. $dom = new DOMDocument();
  2. $dom->loadHTML( $text );
  3.  
  4. foreach( $dom->getElementsByTagName( 'tr' ) as $row ) {
  5.     if ( $row->getAttribute( 'class' ) ) {
  6.         continue;
  7.     }
  8.  
  9.     foreach( $row->getElementsByTagName( 'td' ) as $cell ) {
  10.         echo $cell->nodeValue;
  11.     }
  12. }

(Отредактировано автором: 22 Июня, 2013 - 11:00:39)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB