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

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

1. event - 12 Января, 2016 - 13:11:08 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $page = file_get_contents("http://www.3dnews.ru/926439");
  2.  
  3. preg_match('#<div class="([^<]+)" itemprop="articleBody">([^<]+)</div>#', $page, $descr);
  4.  
  5. var_dump($descr);


Есть такой код, но почему-то не работает (не парсится)... В чем проблема?
2. Viper - 12 Января, 2016 - 14:03:16 - перейти к сообщению
Проще через xpath с правилами по атрибутам microdata.
3. Faraon-san - 12 Января, 2016 - 14:24:56 - перейти к сообщению
тут надо использовать инструменты по работе с dom элементами.
или попробуй phpQuery.
4. google_funny - 12 Января, 2016 - 21:12:29 - перейти к сообщению
event
Уже работает!
Сейчас я тебе помогу, мой друг.. дай взглянуть..

вот твое рег. выражение.. рабочее)
PHP:
скопировать код в буфер обмена
  1. $regex = '`<div[\s\w="\'-]+itemprop=["\']articleBody["\']>(.*?)<\/div>[\s\n\r]+<div\s+class=["\']entry-meta content-block-header["\']>`is'


А это нормальная CURL функция для получения контента.. рекомендую использовать именно ее в коде.. чтобы было так..
PHP:
скопировать код в буфер обмена
  1.  
  2. $_html = _cURL('http://www.3dnews.ru/926439');
  3. $html = $_html['content'];
  4. preg_match($regex, $html, $descr);
  5.  
  6.  


Это сама функция, что использую в предыдущем коде. Почему? Потому-что... универсальная, получает сжатый контент, эмитирует просмотр страницы через браузер, а не через PHP код, получает подробную информацию о потоке, легка в отладке..
Спойлер (Отобразить)

 

Powered by ExBB FM 1.0 RC1