Это мой код:
file_put_contents('ip.txt', $ip); // ip is 62.227.217.95 and is saved correctly into ip.txt file
$returned_content = get_data('https://xxx:[email protected]/geoip/v2.1/city/' . $ip);
file_put_contents('content.txt', $returned_content); // file is empty, nothign saved
В комментариях вы можете увидеть, в чем проблема.
НО, когда я помещаю ip напрямую, а не из параметра GET:
file_put_contents('ip.txt', $ip); // ip is 62.227.217.95 and is saved correctly into ip.txt file
$returned_content = get_data('https://xxx:[email protected]/geoip/v2.1/city/62.227.217.95');
file_put_contents('content.txt', $returned_content); // content is written correctly, everything fine.
Что я здесь делаю не так? Еще пробовал urldecode($ip)
Пожалуйста помоги
Все тот же..
Если бы $ip содержал точно62.227.217.95, тогда это было бы нормально. Нет ничего плохого в образце кода, которым вы поделились. Это означает, что переменная не совсем то, что вы думаете.
Что делает get_data? вы можете поместить var_dump($argument) внутрь этой функции и посмотреть, что вы получаете?
hexdump -C ip.txt и ищите непечатаемые символы.
Evert, это причина, по которой я сохранил $ ip в файл !! Чтобы быть уверенным, что это на 100% правильно, мне также интересно, какого черта это не работает. Может потому, что отправляю из приложения для Android? Но ПОЧЕМУ тогда он правильно сохраняется в ip.txt ??
@sammitch ты дал мне идею, что не так, есть какие-то чертовски невидимые символы, preg_replace ('/ [\ x00- \ x1F \ x7F] / u', '', $ ip) решил проблему. Введите это как решение, и я принимаю






пытаться
get_data('https://xxx:[email protected]/geoip/v2.1/city/'.$ip.'');
или
$url = 'https://xxx:[email protected]/geoip/v2.1/city/'.$ip;
get_data($url);
Были невидимые символы, я решил это с помощью: preg_replace('/[\x00-\x1F\x7F]/u', '', $ip)
попробуйте без пробела /city/'.$ip);