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]   

> Без описания
rod99
Отправлено: 07 Июля, 2011 - 23:11:20
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


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




Всем привет!
Задача - вытащить пути к файлу из кода:

<a href="/product/7810797/color/8347" class="product product-7810797 style-1528938 r0-4-1"> <a href="/product/7810797/color/3" class="product product-7810797 style-1528936 r0-4-2"> ....

Делаю вот так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $o = PREG_SET_ORDER;
  3.        
  4.         $stop = 0;
  5.         $link = 'ссылка';
  6.         $p = file_get_contents($link);
  7.         while($stop == 0)
  8.         {
  9.              preg_match_all('/<a href="(.+)" class="product.*">/iU', $p, $items, $o);
  10.              print_r($items);die();
  11.         }
  12. ?>


Печатает пустой массив... Array ( )

Помогите пожалуйста а то уже всю голову сломал...
Спасибо
 
 Top
Саныч
Отправлено: 07 Июля, 2011 - 23:19:19
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




попробуйте:
CODE (htmlphp):
скопировать код в буфер обмена
  1. #<a href=\"([^\"]+)\"#iU

(Отредактировано автором: 07 Июля, 2011 - 23:19:59)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
evgenijj
Отправлено: 07 Июля, 2011 - 23:26:18
Post Id



Участник


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


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




Здесь вообще какая-то муть написана
CODE (htmlphp):
скопировать код в буфер обмена
  1. <a href="..." class="..."> <a href="..." class="..."> ....

Это -- цитата. Что такое ссылка внутри ссылки. Двойной редирект?
И что за конструкция
$stop = 0;
while($stop == 0) {
.....
}
По моему -- вечный цикл. Что хотел сказать автор -- дело темное...
 
 Top
Саныч
Отправлено: 07 Июля, 2011 - 23:28:51
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




evgenijj, не заморачивайтесь Улыбка Вопрос был про регулярку... А про все остальное... может позже автор сам поймет как лучше...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
rod99
Отправлено: 07 Июля, 2011 - 23:47:20
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


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




Спасибо за ответы. Извиняюсь что не понятно описал что нужно. В первом посте указал урезанный код. Вот часть от полного:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <a href="/search/null/filter/zc1/%22Shoes%22/txAttrFacet_Gender/%22Women%22/brandNameFacet/%22Helle+Comfort%22/sort/goliveRecentSalesStyle/desc/" title="Helle Comfort - (107 Items)" class=""> Helle Comfort <span>(107)</span> </a> <a href="/product/7766873/color/292847" class="product product-7766873 style-1496995 r0-17-2"> <img src="http://a2.zassets.com/images/z/1/4/9/1496995-p-LARGE_SEARCH.jpg" alt="adidas Running - CLIMACOOL® Oscillation W" /> <span class="brandName">adidas Running</span> <span class="productName">CLIMACOOL® Oscillation W</span> <span class="price">$75.00</span> <span class="flag"> <span class="new">NEW!</span> </span> <span class="quickViewMe btn secondary zgae-click*Search-Results-Page*Quick-View*Open">Quick View</span> </a> <a href="/product/7729078/color/292914" class="product product-7729078 style-1497310 r0-17-3"> <img src="http://a1.zassets.com/images/z/1/4/9/1497310-p-LARGE_SEARCH.jpg" alt="adidas - Fluid Trainer Light II W" /> <span class="brandName">adidas</span> <span class="productName">Fluid Trainer Light II W</span> <span class="price">$70.00</span> <span class="flag"> <span class="new">NEW!</span> </span> <span class="quickViewMe btn secondary zgae-click*Search-Results-Page*Quick-View*Open">Quick View</span> </a> <br class="clear" /> <a href="/product/7766918/color/292928" class="product product-7766918 style-1497334 r0-18-0"> <img src="http://a2.zassets.com/images/z/1/4/9/1497334-p-LARGE_SEARCH.jpg" alt="adidas Running - Vigor TR W" /> <span class="brandName">adidas Running</span> <span class="productName">Vigor TR W</span> <span class="price">$75.00</span> <span class="stars rating5">Rated: 5 stars!</span> <span class="flag"> <span class="new">NEW!</span> </span> <span class="quickViewMe btn secondary zgae-click*Search-Results-Page*Quick-View*Open">Quick View</span> </a>


Надо вытащить только те пути после которых идет class="product....
Из данной части кода надо вытащить 3 пути:
/product/7766873/color/292847
/product/7729078/color/292914
/product/7766918/color/292928

Это вытаскивать не надо - /search/null/filter/zc1/%22Shoes%22/txAttrFacet_Gender/%22Women%22/brandNameFacet/%22Helle+Comfort%22/sort/goliveRecentSalesStyle/desc/

Что касается php-кода - это тоже часть парсера. Просто именно эта часть сейчас не работает. Как правильно отметил Саныч меня интересует только регулярка
CODE (htmlphp):
скопировать код в буфер обмена
  1. '/<a href="(.+)" class="product.*">/iU'

(Отредактировано автором: 07 Июля, 2011 - 23:56:05)

 
 Top
Саныч
Отправлено: 08 Июля, 2011 - 00:00:33
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




нужно сразу писать, что "Надо вытащить только те пути после которых идет class="product". Попробуйте:
CODE (htmlphp):
скопировать код в буфер обмена
  1. #<a href=\"([^\"]+?)\" class=\"product#iU


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
rod99
Отправлено: 08 Июля, 2011 - 00:07:18
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


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




Саныч пишет:
Попробуйте:
CODE (htmlphp):
скопировать код в буфер обмена
  1. #<a href=\"([^\"]+?)\" class=\"product#iU


Попробовал.
Результат: Array ( [0] => Array ( [0] =>
 
 Top
tsoi85
Отправлено: 08 Июля, 2011 - 00:23:45
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


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




PHP:
скопировать код в буфер обмена
  1.  
  2. #<a href=\"([^\>\"]*)\" class=\"product ([^\"]*)\">(.*)</a>#iU
  3.  


Результат var_dump:
Спойлер (Отобразить)
 
 Top
evgenijj
Отправлено: 08 Июля, 2011 - 01:09:39
Post Id



Участник


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


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




ГДЕ ИСКАЛИ:
CODE (html):
скопировать код в буфер обмена
  1.   <a href="/search/null/filter/zc1/%22Shoes%22/txAttrFacet_Gender/%22Women%22/brandNameFacet/%22Helle+Comfort%22/sort/goliveRecentSalesStyle/desc/" title="Helle Comfort - (107 Items)" class=""> Helle Comfort <span>(107)</span> </a>
  2.         <a href="/product/7766873/color/292847" class="product product-7766873 style-1496995 r0-17-2"> <img src="http://a2.zassets.com/images/z/1/4/9/1496995-p-LARGE_SEARCH.jpg" alt="adidas Running - CLIMACOOL® Oscillation W" /> <span class="brandName">adidas Running</span> <span class="productName">CLIMACOOL® Oscillation W</span> <span class="price">$75.00</span> <span class="flag"> <span class="new">NEW!</span> </span> <span class="quickViewMe btn secondary zgae-click*Search-Results-Page*Quick-View*Open">Quick View</span> </a>
  3.         <a href="/product/7729078/color/292914" class="product product-7729078 style-1497310 r0-17-3"> <img src="http://a1.zassets.com/images/z/1/4/9/1497310-p-LARGE_SEARCH.jpg" alt="adidas - Fluid Trainer Light II W" /> <span class="brandName">adidas</span> <span class="productName">Fluid Trainer Light II W</span> <span class="price">$70.00</span> <span class="flag"> <span class="new">NEW!</span> </span> <span class="quickViewMe btn secondary zgae-click*Search-Results-Page*Quick-View*Open">Quick View</span> </a> <br class="clear" />
  4.         <a href="/product/7766918/color/292928" class="product product-7766918 style-1497334 r0-18-0"> <img src="http://a2.zassets.com/images/z/1/4/9/1497334-p-LARGE_SEARCH.jpg" alt="adidas Running - Vigor TR W" /> <span class="brandName">adidas Running</span> <span class="productName">Vigor TR W</span> <span class="price">$75.00</span> <span class="stars rating5">Rated: 5 stars!</span> <span class="flag"> <span class="new">NEW!</span> </span> <span class="quickViewMe btn secondary zgae-click*Search-Results-Page*Quick-View*Open">Quick View</span> </a>

КАК ИСКАЛИ:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file = file_get_contents( 'pcre.html' );
  3. $pattern ='~<a href="(/product[^"]*)"[^>]*>(.*?)</a>~';
  4. preg_match_all( $pattern, $file, $matches );
  5. echo 'Что искали, то и нашли:<br/>';
  6. foreach( $matches[1] as $value ) {
  7.   echo 'Вот что нашли: '.$value.'<br/>';
  8. }
  9. ?>

ЧТО НАШЛИ:
Что искали, то и нашли:
Вот что нашли: /product/7766873/color/292847
Вот что нашли: /product/7729078/color/292914
Вот что нашли: /product/7766918/color/292928
 
 Top
rod99
Отправлено: 08 Июля, 2011 - 19:55:32
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


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




Все спасибо большое за помощь Радость
 
 Top
rod99
Отправлено: 28 Июля, 2011 - 20:24:53
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июль 2011  


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




Еще раз обращаюсь за помощью к профессионалам.

Требуется написать регулярку для того чтобы из вот этого кода:

CODE (htmlphp):
скопировать код в буфер обмена
  1. 4: {
  2. 'hires': true,
  3. 'normal': z.imageBucket('http://www.site.ru/images/z/1/5/4/1549435-4-MULTIVIEW.jpg'),
  4. 'height': '360',
  5. 'zoom': z.imageBucket('http://www.site.ru/images/z/1/5/4/1549435-4-2x.jpg'),
  6. 'megazoom': z.imageBucket('http://www.site.ru/images/z/1/5/4/1549435-4-4x.jpg')
  7. },


вытащить вот это: "1549435-4-2x"

Между "images" и "1549435-4-2x" могут быть разные цифры и буквы

Помогите пожалуйста.

(Отредактировано автором: 29 Июля, 2011 - 13:33:14)

 
 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