Вопрос по PHP

Вопросы по программированию
Сообщение
Автор
Аватара пользователя
serg-smirnoff
Капитан Корабля
Сообщения: 8623
Зарегистрирован: 07 май 2005 21:17 pm
Репутация: 302

Вопрос по PHP

#1 Сообщение serg-smirnoff » 28 окт 2011 09:42 am

Я на днях писал один скрипт для одного сайта. Вот сам скрипт

<?php

if (isset($title)){
$title = $title;
$title = str_replace(" ","%20",$title);
}

function getPageContent($url, $agent = false)
{
$contentPage = '';
$ch = curl_init();
$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/assets/cookies/cookies.txt';
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
$contentPage = curl_exec($ch);
curl_close($ch);
return trim($contentPage);
}

$url = "http://market.yandex.ru/search.xml?text=".$title;
$content = getPageContent($url);
if ($content){
$start_str = "
<h3 class=\"b-offers__title\"><a href=\"";
$stop_str = "\" class=\"b-offers__name\"";
$rule = "!".$start_str."(.*?)".$stop_str."!si";
preg_match($rule,$content,$retContent);
}

if ($retContent[1]){
$content2 = getPageContent("http://market.yandex.ru".$retContent[1]);
return $content2;
}
?>

Этот скрипт парсит с Яндекс.Маркета среднюю цену по позиции. Я столкнулся с непонятной мне вещью. Так как сервер, с которого запускается этот скрипт, расположен не в России, то подставляется не местный регион. То есть регион Бавария, и соответственно цену не выводит.

Если вдруг кто-то знает каким образом можно подменить регион и из Баварии задать регион Москва и Московская область, подскажите мне, буду благодарен! Заранее спасибо!
Государство, приказывающее умирать детворе, всегда назовет себя родиной

Аватара пользователя
Сергей В.
Аксакал
Сообщения: 2282
Зарегистрирован: 23 окт 2009 23:50 pm
Репутация: 26
Откуда: Прекрасное далёко.

#2 Сообщение Сергей В. » 29 окт 2011 23:28 pm

Здесь была чушь. :D
Последний раз редактировалось Сергей В. 29 окт 2011 23:54 pm, всего редактировалось 1 раз.

Аватара пользователя
serg-smirnoff
Капитан Корабля
Сообщения: 8623
Зарегистрирован: 07 май 2005 21:17 pm
Репутация: 302

#3 Сообщение serg-smirnoff » 29 окт 2011 23:32 pm

Сергей В. писал(а):В Php не силён, но сама идея может пригодится. Знаешь как связывают аккаунты на форумах с соцсетями? Ну или типа того.. Ну вот, связываешь, а потом в настройках указываешь регион вручную..

Не чушь? :)
чушь
Государство, приказывающее умирать детворе, всегда назовет себя родиной

Аватара пользователя
Сергей В.
Аксакал
Сообщения: 2282
Зарегистрирован: 23 окт 2009 23:50 pm
Репутация: 26
Откуда: Прекрасное далёко.

#4 Сообщение Сергей В. » 29 окт 2011 23:53 pm

тогда удаляю пост, шоб не позориться :?

Аватара пользователя
serg-smirnoff
Капитан Корабля
Сообщения: 8623
Зарегистрирован: 07 май 2005 21:17 pm
Репутация: 302

#5 Сообщение serg-smirnoff » 30 окт 2011 22:56 pm

Да, я тут как бы поумничал. А тем временем решение проблемы -- это формирование cookies определенным образом.

Вот таким:
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

.market.yandex.ru TRUE / FALSE 1328632138 ps_bch 7444012051480730624
.market.yandex.ru TRUE / FALSE 1328632138 ps_gch 5742690930041104384
.yandex.ru TRUE / FALSE 2147483647 yandexuid 4862323201319992138
.yandex.ru TRUE / FALSE 2147483647 yandex_gid 213
Строка выделенная жирным образом передает нужный регион. 213 = Москва.
На файл выставляются права 644 что бы не было перезаписи. Всем помогающим спасибо!
Все решено собтсвенными усилиями, без посторонней помощи.
Государство, приказывающее умирать детворе, всегда назовет себя родиной

Аватара пользователя
Big_Dog
Аксакал
Сообщения: 3732
Зарегистрирован: 28 ноя 2008 04:23 am
Репутация: 80
Откуда: Щекино

#6 Сообщение Big_Dog » 31 окт 2011 23:47 pm

serg-smirnoff писал(а):Строка выделенная жирным образом передает нужный регион. 213 = Москва.
А чё не 15 (Тула)?
Не торопись отвечать. Сначала подумай: а оно тебе надо? :wink:

Аватара пользователя
serg-smirnoff
Капитан Корабля
Сообщения: 8623
Зарегистрирован: 07 май 2005 21:17 pm
Репутация: 302

#7 Сообщение serg-smirnoff » 31 окт 2011 23:50 pm

Big_Dog писал(а):
serg-smirnoff писал(а):Строка выделенная жирным образом передает нужный регион. 213 = Москва.
А чё не 15 (Тула)?
Ну. Сайт на котором стоит этот скрипт показывает среднюю цену по позициям на товар для региона Москва. Таковы условия задачи :-)
Государство, приказывающее умирать детворе, всегда назовет себя родиной

Ответить