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
Форумы портала PHP.SU :: Версия для печати :: Помогите с preg_match
Форумы портала PHP.SU » » Вопросы новичков » Помогите с preg_match

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

1. Belohalatny - 09 Декабря, 2011 - 20:50:04 - перейти к сообщению
Всем привет, пишу парсер, наткнулся на проблему,
есть конструкция вида:
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" и перейти по ней, а дальнейшие шаги у меня уже написаны.

Заранее благодарю за любую помощь!
2. DlTA - 09 Декабря, 2011 - 20:58:21 - перейти к сообщению
а проблема то в чем?
3. Belohalatny - 09 Декабря, 2011 - 21:00:52 - перейти к сообщению
Проблема в том, что у меня не получается написать шаблон для preg_match, который выдирал бы мне именно ту ссылку, о которой я писал в сабже и далее скрипт загружал бы страницу по выдранной ссылке.
4. DlTA - 09 Декабря, 2011 - 21:03:28 - перейти к сообщению
а пример попыток?
5. Belohalatny - 09 Декабря, 2011 - 21:09:32 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. preg_match_all("#\s(?:href|src|url)=(?:[\"\'])?(.*?)(?:[\"\'])?(?:[\s\>])#i", $content, $arrr);

Но этот код выдирает все ссылки со страницы, а как переписать его так, чтобы выдирал нужную, я не знаю...
6. DlTA - 09 Декабря, 2011 - 21:27: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. )
7. Belohalatny - 09 Декабря, 2011 - 21:35:19 - перейти к сообщению
У меня на выходе получилось так:
CODE (html):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => VAGКабель антенны поиск
и далее остальной html страницы до самого конца.
8. DlTA - 09 Декабря, 2011 - 21:39:20 - перейти к сообщению
а что именно в коде html который на выходе?
9. Belohalatny - 09 Декабря, 2011 - 21:43:08 - перейти к сообщению
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
и так далее...
10. DlTA - 09 Декабря, 2011 - 21:48:04 - перейти к сообщению
Belohalatny пишет:
<td>Кабель антенны</td>

так а че за хрень?!
где перекодировка!?
11. Belohalatny - 09 Декабря, 2011 - 21:52:06 - перейти к сообщению
Сама страница работает в utf-8, а исходный код отобразился в cp1251... В браузере весь текст читаем.
12. DlTA - 09 Декабря, 2011 - 21:56:44 - перейти к сообщению
ну так прочитали
перекодировали, нашли
если надо еще раз перекодировали
передали дальше

такое:
/VAG<\/td><td>(.+)<\/td>.+\s(?:href|src|url)?=(?:[\"\'])?(.*?)(?:[\"\'])?(?:[\s\>])/is
13. Belohalatny - 09 Декабря, 2011 - 22:01:20 - перейти к сообщению
Тоже самое выводится...
14. DlTA - 09 Декабря, 2011 - 22:12:46 - перейти к сообщению
надеюсь последний вариант)
/VAG<\/td><td>(.+)<\/td>.+\s(?:href|src|url)?=(?:[\"\'])?([^\"\']+)[\"\']?/is
15. Belohalatny - 09 Декабря, 2011 - 22:21:01 - перейти к сообщению
К сожалению, тоже самое...

 

Powered by ExBB FM 1.0 RC1