curl — get_headers () возвращает неверный результат, если в URL есть символы не-UTF

Я наткнулся на неправильный результат get_headers() метод.

URL для тестирования: http://www.zakon.hr/z/199/Zakon-o-elektroni%C4%8Dkoj-trgovini

Вот простой запрос curl к этому URL:

введите описание изображения здесь

Как вы можете видеть на скриншоте, есть успешный ответ с кодом 200 OK.

Но если я использую get_headers() для того же URL я получаю еще один результат:

var_dump(get_headers('http://www.zakon.hr/z/199/Zakon-o-elektroničkoj-trgovini'));

array(4) {
[0]=>
string(24) "HTTP/1.0 400 Bad request"[1]=>
string(23) "Cache-Control: no-cache"[2]=>
string(17) "Connection: close"[3]=>
string(23) "Content-Type: text/html"}

Это почему?

2

Решение

Последний член содержит данные UTF-8, которые должны быть правильно закодированы. Это работает:

var_dump(get_headers('http://www.zakon.hr/z/199/' .
rawurlencode('Zakon-o-elektroničkoj-trgovini')
));

Производит этот вывод:

array(11) {
[0] =>
string(15) "HTTP/1.1 200 OK"[1] =>
string(73) "Set-Cookie: JSESSIONID=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA; Path=/; HttpOnly"[2] =>
string(100) "Set-Cookie: AAAA=AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA; Expires=Wed, 09-Apr-2025 14:57:24 GMT; Path=/"[3] =>
string(37) "Content-Type: text/html;charset=utf-8"[4] =>
string(23) "Content-Language: en-US"[5] =>
string(21) "Content-Length: 74205"[6] =>
string(21) "Vary: Accept-Encoding"[7] =>
string(35) "Date: Mon, 01 Jun 2015 14:57:24 GMT"[8] =>
string(17) "Connection: close"[9] =>
string(22) "Server: lighttpd/2.0.0"[10] =>
string(43) "Set-Cookie: LBSERVERID=srv2-zakonhr; path=/"}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]