PHP cURL - "Illegal characters found in URL1" 使用变量时
PHP cURL - "Illegal characters found in URL1" when using varibles
所以我正在向一个包含一些内容的网站发送一个 cURL 请求并且它工作正常,但是如果我使用一个变量,我从 MySQL-DB 中获得了一些信息,在字符串,它 return 带有错误 "ERROR: Illegal characters found in URL1"。
我曾尝试使用 $var
、(string) $var
和 "{$var}"
等变量,但其中 none 有效
这就是我的
//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"
,它工作正常。
当我只是 return $name
变量时,我将输出作为字符串,如 Random name
.
那么,为什么我在使用从 DB 获取的变量时出现错误。我该如何解决?
希望你能理解我的问题并能帮助我。
您需要先使用 urlencode() 对字符串进行编码,然后再在 URL 中使用它们。
$apiKey = urlencode("...");
$name = urlencode($userinfo["Name"]);
$number = urlencode("...");
该函数对非法 URL 字符进行编码,因此可以在 URL 中安全地使用它们。
示例:Random name
变为 Random%20name
所以我正在向一个包含一些内容的网站发送一个 cURL 请求并且它工作正常,但是如果我使用一个变量,我从 MySQL-DB 中获得了一些信息,在字符串,它 return 带有错误 "ERROR: Illegal characters found in URL1"。
我曾尝试使用 $var
、(string) $var
和 "{$var}"
等变量,但其中 none 有效
这就是我的
//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"
,它工作正常。
当我只是 return $name
变量时,我将输出作为字符串,如 Random name
.
那么,为什么我在使用从 DB 获取的变量时出现错误。我该如何解决?
希望你能理解我的问题并能帮助我。
您需要先使用 urlencode() 对字符串进行编码,然后再在 URL 中使用它们。
$apiKey = urlencode("...");
$name = urlencode($userinfo["Name"]);
$number = urlencode("...");
该函数对非法 URL 字符进行编码,因此可以在 URL 中安全地使用它们。
示例:Random name
变为 Random%20name