спец. символ в параметре get , а так же русские буквы в параметре. file_get_contents
собственно надо получить при помощи file_get_contents ответ от
https://geocult.ru/lunnyiy-kalendar-2
а проблем тут 2.
- в строке запроса в значении параметра tz2 есть символ /. Дурь, конечно, но на запрашиваемый сервер я повлиять не могу.
- русские буквы в значении параметра cit которые я пробовал закодировать в % последовательность так же не срабатывают.
То есть грубо говоря я при помощи file_get_contents делаю следующее :
$url = "https://geocult.ru/lunnyiy-kalendar-2?d1=10&m1=6&y1=1981&h1=20&mi=4&tz1=1&tz2=Europe%2FBerlin&lg=11.5754<=48.1374&cit=%D0%9C%D1%8E%D0%BD%D1%85%D0%B5%D0%BD&cn=DE&st=02&ci=2867714&sb=1"
$result = file_get_contents($url);
echo($result);
но параметры tz2=Europe%2FBerlin и cit=%D0%9C%D1%8E%D0%BD%D1%85%D0%B5%D0%BD не понимаются в https://geocult.ru/lunnyiy-kalendar-2
тогда как если вбить в браузер всё отображается как мне надо : https://geocult.ru/lunnyiy-kalendar-2?d1=10&m1=6&y1=1981&h1=20&mi=4&tz1=1&tz2=Europe%2FBerlin&lg=11.5754<=48.1374&cit=%D0%9C%D1%8E%D0%BD%D1%85%D0%B5%D0%BD&cn=DE&st=02&ci=2867714&sb=1
Ответы (1 шт):
для кодирования данных в URL используют url_encode, и в целом параметры обычно оформляют в виде массива, а потом формируют строку с помощью http_build_query()
$params = [
'd1' => 10,
'm1' => 6,
'y1' => 1981,
'h1' => 20,
'mi' => 4,
'tz1' => 1,
'tz2' => "Europe/Berlin",
'lg' => 11.5754,
'lt' => 48.1374,
'cit' => "Мюнхен",
'cn' => "DE",
'st' => 02,
'ci' => 2867714,
'sb' => 1
];
$ctx = [
"ssl" => [
"verify_peer"=>false,
"verify_peer_name"=>false,
]
];
$url = "https://geocult.ru/lunnyiy-kalendar-2?" . http_build_query($params);
$data = file_get_contents($url, null, stream_context_create($ctx));
последующие действия по парсингу предлагаю проводить, например, с помощью simple_html_dom