卷曲不适合#

时间:2016-03-10 09:38:13

标签: php curl

所以我有这个函数发送短信,功能很好但问题是当我发送#或新行时,该功能没有按预期工作!

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");

它会毫无问题地发送消息!

1 个答案:

答案 0 :(得分:1)

您必须在网址中使用urlencode()(docs)每个字符串;特别是你的消息:

$url = "http://www...com/api/sendsms.php?...&message=".urlencode($message)."&numbers=".urlencode($phoneNumber)."&...";

这会将"#"替换为"%23"。您已经使用"%20"替换代码中的空间,但这不是url字符串中唯一的特殊字符。因此,请勿尝试手动执行此操作,让urlencode()为您完成此操作。