PHP cURL - "Недопустимые символы, найденные в URL1" при использовании переменных - PullRequest
0 голосов
/ 23 марта 2019

Итак, я отправляю запрос cURL на веб-сайт с некоторым содержимым, и он работает нормально, но если я использую переменную, в которой у меня есть некоторая информация из MySQL-DB, в строке она возвращается с ошибка «ОШИБКА: в URL1 найдены недопустимые символы».

Я пытался использовать переменную, такую ​​как $var, (string) $var и "{$var}", но ни одна из них не сработала

Это то, что у меня есть

//Up here, some code where I get some data from the database

$apiKey = "...";
$name = $userinfo["Name"];
$number = "...";

$content = "Hey " . $name;

$str = str_replace(array(" ", "/n"), array("+", "%0A"), $content);

$url = "https://thing.thing.com/thing/http/send?apiKey=" . $apiKey . "&to=45" . $number . "&content=" . $str;

//Down here I send the cURL request

Если я использую другую самопровозглашенную переменную, такую ​​как $name = "Albert Einstein", она отлично работает.

Когда я просто возвращаю переменную $name, я получаю вывод в виде строки типа Random name.

Так почему же я получаю ошибку при использовании переменной, полученной из БД. И как я могу это исправить?

Надеюсь, вы понимаете мою проблему и можете мне помочь.

1 Ответ

0 голосов
/ 23 марта 2019

Вам необходимо кодировать свои строки, используя urlencode () , прежде чем использовать их в URL.

$apiKey = urlencode("...");
$name   = urlencode($userinfo["Name"]);
$number = urlencode("...");

Функция кодирует недопустимые символы URL, чтобы их можно было безопасно использовать в URL.
Пример: Random name становится Random%20name

...