所以我有这个函数发送短信,功能很好但问题是当我发送#或新行时,该功能没有按预期工作!
function sendSMS($phoneNumber,$message){
$ch = curl_init();
$urll = "http://www....com/api/sendsms.php?username=username&password=pass&message=$message&numbers=$phoneNumber&sender=sender&unicode=E&return=full";
$url = str_replace(' ','%20',$urll);
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
}
如果我这样使用它,例如:
sendSMS("phone number","#hashtag");
它没有发送消息,而当我像这样使用它时:
sendSMS("phone number","some text message");
它会毫无问题地发送消息!
答案 0 :(得分:1)
您必须在网址中使用urlencode()
(docs)每个字符串;特别是你的消息:
$url = "http://www...com/api/sendsms.php?...&message=".urlencode($message)."&numbers=".urlencode($phoneNumber)."&...";
这会将"#"
替换为"%23"
。您已经使用"%20"
替换代码中的空间,但这不是url字符串中唯一的特殊字符。因此,请勿尝试手动执行此操作,让urlencode()
为您完成此操作。