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 :: Помогите с preg_match

 PHP.SU

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


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

> Без описания
Belohalatny
Отправлено: 09 Декабря, 2011 - 20:50:04
Post Id


Гость


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


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




Всем привет, пишу парсер, наткнулся на проблему,
есть конструкция вида:
PHP:
скопировать код в буфер обмена
  1. elseif($content=='' OR strpos($content, 'найден в каталогах следующих фирм:') !== false){
  2. echo "[ ".date('H:i:s')." ] - ".$product_sku[$i][0]." текст!\r\n";
  3. unset($product_sku[$i]);
  4. array_shift ($prox);
  5. continue;
  6. }


если на странице-доноре появляется этот текст (найден в каталогах следующих фирмУлыбка, значит что данный блок должен перейти по определенной ссылке в этом коде:
CODE (html):
скопировать код в буфер обмена
  1. <td width="150">VAG</td><td>Кабель антенны</td><td align="center" width="100"><b><a class="linkPtr" href="price.aspx?pid=D7F040BA"> поиск</a></b></td>
  2.  

Наименование "Кабель антенны" и сама ссылка в каждом отдельном случае, когда вылезает такая страница- разные. Задача, выхватить ссылку в куске кода, где есть слово "VAG" и перейти по ней, а дальнейшие шаги у меня уже написаны.

Заранее благодарю за любую помощь!
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 20:58:21
Post Id



Постоянный участник


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


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




а проблема то в чем?
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 21:00:52
Post Id


Гость


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


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




Проблема в том, что у меня не получается написать шаблон для preg_match, который выдирал бы мне именно ту ссылку, о которой я писал в сабже и далее скрипт загружал бы страницу по выдранной ссылке.
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 21:03:28
Post Id



Постоянный участник


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


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




а пример попыток?
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 21:09:32
Post Id


Гость


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


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




PHP:
скопировать код в буфер обмена
  1. preg_match_all("#\s(?:href|src|url)=(?:[\"\'])?(.*?)(?:[\"\'])?(?:[\s\>])#i", $content, $arrr);

Но этот код выдирает все ссылки со страницы, а как переписать его так, чтобы выдирал нужную, я не знаю...
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 21:27:53
Post Id



Постоянный участник


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


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




так чтоб сильно не вчитываться
PHP:
скопировать код в буфер обмена
  1. $text = '<td width="150">VAG</td><td>Кабель антенны</td><td align="center" width="100"><b><a class="linkPtr" href="price.aspx?pid=D7F040BA"> поиск</a></b></td>';
  2.     preg_match("/VAG<\/td><td>(.+)<\/td>.+\s(?:href|src|url)=(?:[\"\'])?(.*?)(?:[\"\'])?(?:[\s\>])/is",$text,$match);
  3.     print_r($match);

CODE (text):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => VAG</td><td>Кабель антенны</td><td align="center" width="100"><b><a class="linkPtr" href="price.aspx?pid=D7F040BA">
  4.     [1] => Кабель антенны
  5.     [2] => price.aspx?pid=D7F040BA
  6. )
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 21:35:19
Post Id


Гость


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


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




У меня на выходе получилось так:
CODE (html):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => VAGКабель антенны поиск
и далее остальной html страницы до самого конца.
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 21:39:20
Post Id



Постоянный участник


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


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




а что именно в коде html который на выходе?
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 21:43:08
Post Id


Гость


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


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




CODE (html):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => VAG</td><td>Кабель антенны</td><td align="center" width="100"><b><a class="linkPtr" href="price.aspx?pid=D7F040BA"> РїРѕРёСЃРє</a></b></td>
  4.  
  5.                 </tr>
  6.  
  7.         </table>
  8.  
  9. </div><div>
  10.  
  11.  
  12.  
  13. </div><table border="0" cellpadding="2" cellspacing="2" width="100%" style="padding-top:10px"><tr><td></td></tr><tr><td colspan="2" style="padding-left:10px" valign="top"><table width="100%" cellpadding="2" cellspacing="2"><tr><td cols
и так далее...
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 21:48:04
Post Id



Постоянный участник


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


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




Belohalatny пишет:
<td>Кабель антенны</td>

так а че за хрень?!
где перекодировка!?
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 21:52:06
Post Id


Гость


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


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




Сама страница работает в utf-8, а исходный код отобразился в cp1251... В браузере весь текст читаем.
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 21:56:44
Post Id



Постоянный участник


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


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




ну так прочитали
перекодировали, нашли
если надо еще раз перекодировали
передали дальше

такое:
/VAG<\/td><td>(.+)<\/td>.+\s(?:href|src|url)?=(?:[\"\'])?(.*?)(?:[\"\'])?(?:[\s\>])/is
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 22:01:20
Post Id


Гость


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


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




Тоже самое выводится...
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 22:12:46
Post Id



Постоянный участник


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


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




надеюсь последний вариант)
/VAG<\/td><td>(.+)<\/td>.+\s(?:href|src|url)?=(?:[\"\'])?([^\"\']+)[\"\']?/is
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 22:21:01
Post Id


Гость


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


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




К сожалению, тоже самое...
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB