2016-03-10 3 views
1

поэтому у меня есть эта функция, которая отправляет sms-сообщение. Функция отлично работает, но проблема в том, когда я отправляю # или новую строку, функция не работает должным образом!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

Вы должны указать urlencode()(docs) каждую строку, которую вы используете в своем URL-адресе; в частности, ваше сообщение:

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

Это заменит "#" с "%23". Вы уже дезинфицируете пространство в своем коде, заменив его на "%20", но это не единственный специальный символ в строке url. Поэтому не пытайтесь делать это вручную, и пусть urlencode() сделает это за вас.

+0

Это сработало, спасибо! –