php cURL.preg_match, извлекать текст из xhtml - PullRequest
0 голосов
/ 15 мая 2010

Я пытаюсь извлечь цену из приведенной ниже html-страницы / ссылки, используя php cURL и preg_match. В основном я ожидаю, что этот код выведет 4550, но по некоторым причинам я получаю

 Notice: Undefined offset: 1 in C:\wamp\www\test.php on line 22

Я думаю, что шаблон правильный, потому что, если я помещаю html сам в переменную и экранирую "", это работает! , Также, если я выведу (echo $ result;), он отобразит html, правильно полученный с веб-сайта foxtons, поэтому я просто не могу понять, почему все это не работает. Мне нужно сделать это, и я был бы признателен, если бы вы сказали мне, почему генерируется это уведомление и почему мой текущий скрипт не работает.

$url = "<a href="http://www.foxtons.co.uk/search?bedrooms_from=0&property_id=727717" rel="nofollow noreferrer">http://www.foxtons.co.uk/search?bedrooms_from=0&property_id=727717</a>";
$ch = curl_init($url);</p>

<p>curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($ch);
curl_exec($ch);
curl_close($ch);
$result2 = str_replace('"', '\"', $result);</p>

<p>$tagname1= ");</script>
    ";
 $tagname2= "</noscript> 
    per month</a>";</p>

<code>$pattern = "/$tagname1(.*?)$tagname2/";
preg_match($pattern, $result, $matches);
$prices = $matches[1];

print_r($prices);

?>
</code>

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Не используйте REGEX для анализа html , вместо этого используйте html dom-парсер, например PHP Simple HTML DOM Parser

include("simple_html_dom.php") ;

$html = file_get_html("http://www.foxtons.co.uk/search?bedrooms_from=0&property_id=727717");

foreach($html->find('noscript') as $noscript)
{

    echo $noscript->innertext."<br>";
} 

Эхо:

£1,600
6,934
£1,500
6,500
£1,350
5,850
£950
4,117
£925
4,009
£850
3,684
£795
3,445
£795
3,445
£775
3,359
£750
3,250
0 голосов
/ 15 мая 2010

Я немного переписал скрипт, чтобы учесть более 1

...