Обратите внимание на заголовки запросов и iconv для преобразования кодировки.
Если вы не конвертируете строку из windows-1251 в utf-8, preg_match не сработает.
После преобразования я использовал простое регулярное выражение для извлечения телефонных номеров со всей страницы.
<?php
$url = 'http://vashmagazin.ua/cat/catalog/?rub=100&subrub=1';
$ch = curl_init();
$request_headers = array
(
"Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Charset" => "windows-1251,utf-8;q=0.7,*;q=0.3",
);
$header = array();
foreach ($request_headers as $key => $value)
$header[] = "{$key}: {$value}";
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
$html = iconv("windows-1251", "UTF-8", $html);
$matches = array();
$pattern = '/\([0-9]{3}\)[0-9]{3,}\-[0-9]+/us';
if (preg_match_all($pattern, $html, $matches))
{
var_dump($matches);
}
?>
Приведенный выше исходный код полностью протестирован и полностью работает.
Если вы не можете установить библиотеку curl, попробуйте заменить блок curl на file_get_contents($url).
Чтобы установить curl в вашей операционной системе, выполните поиск в Google, в Ubuntu используйте sudo apt-get install curl libcurl3 php5-curl и перезапустите apache.
person
Francesco Casula
schedule
24.08.2012