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]   

> Описание: Вырезать html от <tbody> до </tbody>
Medallion
Отправлено: 06 Апреля, 2013 - 14:31:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




Нужно вырезать html-код от <tbody> до </tbody>.
Кто подскажет какие-то решения, или путь к решению?
 
 Top
LIME
Отправлено: 06 Апреля, 2013 - 14:34:49
Post Id


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


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


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




PHP:
скопировать код в буфер обмена
  1. $str=preg_replace('#\<tbody\>.*?\</tbody\>#is','',$str);

(Отредактировано автором: 06 Апреля, 2013 - 14:35:09)

 
 Top
Medallion
Отправлено: 06 Апреля, 2013 - 14:39:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




Спасибо!
Уточняю, нужно то что вырезалось от <tbody> до </tbody>
оставить и занести в переменн
ую.
 
 Top
LIME
Отправлено: 06 Апреля, 2013 - 14:48:47
Post Id


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


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


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




PHP:
скопировать код в буфер обмена
  1. preg_match_all('#\<tbody\>.*?\</tbody\>#is',$str,$matches);
  2. var_dump($matches);
уже год в php
давно пора самому знать регулярки
 
 Top
Medallion
Отправлено: 06 Апреля, 2013 - 14:57:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




LIME пишет:
уже год в php
давно пора самому знать регулярки

Если бы я не бросил PHP, то бы наверное знал.
А щас знания нужны
 
 Top
Medallion
Отправлено: 06 Апреля, 2013 - 19:35:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




Столкнулся с проблемой.
Есть строка:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <a href="/3150571091.html" class="iImg"
  3. data-img="http://photos/128x96/31/50/57/10/3150571091" title="Титульная страница"></a>
  4.  


Все значения атрибутов вытягиваю с помощью библиотеки PHP Simple HTML DOM Parser,
но загвоздка с data-img.
Что это за атрибут? Он не относится к <а> тегу
и не вытягивается с помощью библиотеки.

Кто подскажет решение, желательно с помощью DOM, но можно и регуляркой.
Мне нужно значение data-img закинуть в переменную.
Спасибо заранее.
(Добавление)
Посмотрел в интернет, это пользовательский атрибут в HTML 5.
Нужна регулярка, чтобы выдернуть значение
(Добавление)
Решение в сети найдено, по крайней мере работат.
PHP:
скопировать код в буфер обмена
  1.  
  2. preg_match_all('#<a([^>]+)>(.*)</a>#iU', $photo, $out);
  3. $links = array();
  4. for($i = 0, $c = count($out[1]); $i < $c; $i++)
  5. {      
  6.         if(!preg_match('/data-img=(["\'])(.+)\\1/iU', $out[1][$i], $data))
  7.         $data[2] = null;
  8.                 $href = $data[2];
  9. }
  10.  
 
 Top
LIME
Отправлено: 06 Апреля, 2013 - 22:03:17
Post Id


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


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


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




Medallion пишет:
и не вытягивается с помощью библиотеки.
покажи как тащишь
 
 Top
Medallion
Отправлено: 06 Апреля, 2013 - 22:29:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $html = file_get_html('http://ссылка');
  3.  
  4. $is = -1;
  5. foreach($html->find('.itemListResult') as $a){
  6.         $cont[] = $a;
  7.         $is++;
  8.                
  9.                 # Ссылка, имя
  10.                 foreach($cont[$is]->find('a.iImg') as $b){
  11.                 $href[] = $b->href;
  12.                 $title[] = $b->title;
  13.                        
  14.                         # Путь к картинке
  15.                         preg_match_all('#<a([^>]+)>(.*)</a>#iU', $b, $out);
  16.                         $links = array();
  17.                         for($i = 0, $c = count($out[1]); $i < $c; $i++)
  18.                         {      
  19.                                 if(!preg_match('/data-img=(["\'])(.+)\\1/iU', $out[1][$i], $data))
  20.                                         $data[2] = null;
  21.                                         $img[] = $data[2];
  22.                         }
  23.                 }
  24.                
  25.                 # Цена
  26.                 foreach($cont[$is]->find('span.listingPostagePrice') as $pr){
  27.                 $price[] = $pr->plaintext;
  28.                 }
  29.                
  30.                 # Время
  31.                 foreach($cont[$is]->find('span.iTime') as $t){
  32.                 $time[] = $t->plaintext;
  33.                 }
  34.     }
  35.        
  36. $x = 0;
  37. while($is >= $x) {
  38.         echo $href[$x].'<br>'.$title[$x].'<br>'.$img[$x].'<br>'.$price[$x].'<br>'.$time[$x].'<br><br><br>';
  39.         $x++;
  40. }
  41.  



Мне нужно было организовать выборку: ссылки на товар, на изображение, заголовок, цену и время.

Этот скрипт уже парсит то что мне нужно.
 
 Top
LIME
Отправлено: 06 Апреля, 2013 - 22:38:02
Post Id


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


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


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




PHP:
скопировать код в буфер обмена
  1. $href[] = $b->href;
  2. $title[] = $b->title;
  3. echo $data_img[]=$b->{'data-img'};
пробовал?
не факт что поможет
не проверял

(Отредактировано автором: 06 Апреля, 2013 - 22:38:20)

 
 Top
Medallion
Отправлено: 06 Апреля, 2013 - 22:42:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




Спасибо!
Помогло.
Код стал чище)
 
 Top
Medallion
Отправлено: 08 Апреля, 2013 - 09:34:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




Кто подскажет.
Нужно вытянуть со строки: /listing/user.php?us_id=23641975
значение id
тоесть вытянуть цифры
нужна регулярка или с помощью simple_html_dom
Например с dom вытягиваю так всю строку:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($html->find('a[href^=/listing/user.php?us_]') as $a)
  3. echo $a->href;
  4.  
 
 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