PHP cURL-使用变量时“ URL1中发现非法字符”

时间:2019-03-23 13:17:51

标签: php php-curl

因此,我向网站发送了一个包含一些内容的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 :(得分:0)

在URL中使用字符串之前,您需要使用urlencode()对字符串进行编码。

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

该函数对非法URL字符进行编码,因此可以安全地在URL中使用它们。
示例:Random name变成Random%20name