这里foreach循环返回一个电话号码,该电话号码在链接中,但每当我尝试运行此脚本时,它会给我错误400错误请求。我也尝试过使用useragent,但即使这样也无法解决错误。任何帮助都会很棒。
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
时,错误的请求肯定会发生,但我希望此网址执行:http://bmsms.co.in/sendsms.aspx?mobile=1234567890&pass=password&senderid=ID&to=+ 9408644603&msg=hey
但是此网址会被执行:http://bmsms.co.in/sendsms.aspx?mobile=1234567890&pass=password&senderid=ID&to=%2B+9408644603&msg=hey
同样在这里,我只将urlencode
应用于我直接进入自己的其他字段的电话号码。此外,糟糕的请求可能是因为如果电话号码不正确,api将无法执行。
答案 0 :(得分:1)
由于某种原因,电话号码中的+
正在破坏接收应用系统。 URL编码无法解决此问题,因为它们只需要数字。您可以使用正则表达式替换所有前导的非数字字符。
preg_replace('/^\D+/','', $serverthing)
\D
是非数字(\d
是数字)
^
是字符串的开头。
+
是前一个字符/组中的一个或多个
/
是分隔符,显示正则表达式的开头和结尾。