2017-01-16 2 views
0

Я искал и тестировал часы, готовые сдаться. У меня есть HTML-страницу, которая будет меняться каждый сейчас и потом, это структура это ....

PHP-код для извлечения данных с html-страницы, включая теги

100 or so lines of HTML 
<div class="the start of the info I want"> 
500 lines of HTML that I want to extract 
<div class="end of the info I want"> 
more lines of HTML 

Это мой код, который не работает, а один из многих я пробовал.

<?php 
$data = file_get_contents('http://www.soemstupidsite.xyz'); 
$regex = '#<div class="the start of the info I want">(.*?)<div 
class="end of the info I want">#'; 
preg_match($regex,$data,$match); 
print_r($match); 
echo $match[1]; 
?> 

Возвращает следующее сообщение об ошибке:
PHP Примечание: Undefined смещение: 1 в /home/www/mycrapcode.php строке 7

Какого черта я делаю не так?

+0

'var_dump ($ match)', чтобы увидеть, что он возвращает –

+1

Я предполагаю, что ошибка смещения заключается в том, что массив пуст, что является print_r ($ match); показывает. – DeathRox

+0

'echo $ match [1];' эта строка выдает * NOTICE *, потому что массив '$ match' пуст. –

ответ

1
$regex = '/<div class="the start of the info I want">(.*?)<div 
class="end of the info I want">/s'; 
+0

Ничего себе, один гнилой "s" отсутствует. Это исправило это. Огромное спасибо. Если ты когда-нибудь в аусси-аутсайде, посмотри на меня, я должен тебе пивной помощник! – DeathRox

+0

ok man, с радостью) –

0

Пожалуйста, прочитайте что-то больше о регулярных выражениях модификаторов/флагах here.

Флаг, который вам нужен, это флаг s, поэтому ваш селектор будет работать на нескольких линиях.

Пример с кодом:

<?php 
$data = file_get_contents('http://www.soemstupidsite.xyz'); 
$regex = '#<div class="the start of the info I want">(.*?)<div class="end of the info I want">#s'; 
preg_match($regex,$data,$match); 
print_r($match); 
echo $match[1]; 
?> 

также: регулярное выражение должно быть на 1 линии, в противном случае она не будет работать.

+0

regex находится на одной строке, он завернут при вставленном. Спасибо за объяснение флага 's'. Александр Малита избил вас на 6 минут за ответ, который я искал полдня. Я тоже увижу пиво, если ты когда-нибудь пойдешь! – DeathRox

Смежные вопросы