Сначала пробую загрузить страничку с Яндек.Маркет
$content = file_get_contents('http://market.yandex.ru/model.xml?hid=91491(8)modelid=3995344');
echo $comtent;
(8) - значок and. У меня почему-то он игнорируется и обрывает пост.
на это мне выдают:
Warning: file_get_contents(http://market.yandex.ru/model.xml?hid=91491(8)modelid=3995344) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /storage/home/srv11142/htdocs1/1.php on line 13
Как я понял на прямую с эту страничку не получается загрузить. Тогда решил обмануть Яндекс)
Создаю файлик "iframe.php" с кодом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<iframe src="http://market.yandex.ru/model.xml?hid=<? echo $_GET['hid']; ?>(8)modelid=<? echo $_GET['modelid']; ?>" width="100%" height="100%">
</body>
</html>
Одним словом гружу страничку с содержанием яндекса в свой iframe.
Затем создаю другой файлик "parser.php" со следующим кодом:
$main_url = 'http://prokopov-nikolai.ru/iframe_yandex.php?';
$hid = '91491';
$modelid = '3995344';
$content = file_get_contents($main_url.'hid='.$hid.'(8)modelid='.$modelid);
preg_match('#<div class="price">(.*)</div>#iU', $content, $price);
echo ($price[0]);
echo $content;
смотрю в браузере результат и вижу, только что вывелось содержимое контекта. А содержимое дива с классом прайс не найдено. Тогда я подумал, что возможно не правильно использовал функцию с регулярным выражением и попробовал контенту задать свое содержание:
$main_url = 'http://prokopov-nikolai.ru/iframe_yandex.php?';
$hid = '91491';
$modelid = '3995344';
$content = '<div class="prices price-inf"><div>Средняя цена: </div><div class="price"><span class="b-prices__num">5(8)nbsp;575</span><span class="b-prices__currency">(8)nbsp;руб.</span></div><span class="b-prices b-prices__range">от(8)nbsp;<span class="b-prices__num">5(8)nbsp;040</span> до(8)nbsp;<span class="b-prices__num">6(8)nbsp;590</span><span class="b-prices__currency">(8)nbsp;руб.</span></span></div>';
preg_match('#<div class="price">(.*)</div>#iU', $content, $price);
echo ($price[0]);
И в результате все получилось. Вот результат "5 575 руб."