PHP CURL 在循环中出现 400 错误

PHP CURL getting 400 error in loop

这里 foreach 循环 returns 一个 phone 数字进入 link 但每当我尝试 运行 这个脚本时它给我错误 400 错误请求.我也尝试过使用用户代理,但即使那样也不能解决错误。任何帮助都会很棒。

PS。这是我的第一个问题,请告诉我是否可以提供任何解决此问题的方法。

foreach($var5 as $number) {
     $ch = curl_init();
     $ch1="http://bmsms.co.in/sendsms.aspx?mobile=0000000000&pass=xxxxxxxx&senderid=xxxxxxx&to=$number&msg=hey";
     echo $ch1;
     curl_setopt($ch, CURLOPT_URL, "$ch1");
     curl_setopt($ch, CURLOPT_HEADER, 0);
     //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36');
     curl_exec($ch);
     curl_close($ch);
}

更新:

当我添加 urlencode 时,错误的请求肯定会发生,但我希望执行此 url:http://bmsms.co.in/sendsms.aspx?mobile=1234567890&pass=password&senderid=ID&to=+ 9408644603&msg=hey 但执行此 url:http://bmsms.co.in/sendsms.aspx?mobile=1234567890&pass=password&senderid=ID&to=%2B+9408644603&msg=hey

另外,在这里我只将 urlencode 应用到我自己直接输入的其余字段的 phone 号。此外,如果 phone 数字不正确,则可能会出现错误请求,因为 api 将不会执行。

phone 号码中的 + 由于某种原因正在破坏接收应用程序系统。 URL 编码无法解决这个问题,因为他们只需要数字。您可以使用正则表达式将所有前导的非数字字符替换为空字符。

preg_replace('/^\D+/','', $serverthing)

\D 是一个非数字(\d 是一个数字)。
^ 是字符串的开头。
+ 是前面的一个或多个 character/group.
/s 是显示正则表达式开始和结束的分隔符。