CURL POSTFIELDS包含"&"字符

时间:2014-09-10 13:29:11

标签: php curl urlencode

我使用CURL方法通过网关发送SMS。 但如果我加入这个角色“&”在我的消息文本区域中,它将仅在此字符之前发送消息。

所以我怎么能修复它来正常发送包含这个角色的消息。

这是我的代码:

$from = "Gateway_username"; // SMS username
$token = "Gateway_password"; // SMS password
$option = $_REQUEST["option"];
$text = $_REQUEST["BulkSMS1__messageTextBox"];

if ($text == "") { } else {

    $url = "http://awaljawaly.awalservices.com.sa:8001/Send.aspx";
    $postfields = array ("REQUESTTYPE" => "SMSSubmitReq",
    "Username" => "$from", "Password" => "$token", "MOBILENO" => "$d_mobile", "MESSAGE" => "$text");

    if (!$curld = curl_init()) {
    echo "Could not initialize cURL session.";
    exit;
    }
    curl_setopt($curld, CURLOPT_POST, true);
    curl_setopt($curld, CURLOPT_POSTFIELDS, $postfields);
    curl_setopt($curld, CURLOPT_URL, $url);
    curl_setopt($curld, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($curld);
    curl_close ($curld);
    preg_match("/(.*)/",$output, $out);
}

这是一条示例消息:

  

我们的地址:H& R中心。

提前致谢。

我用这个来解决我的问题:

$text = str_replace('&', '%26', $_REQUEST["BulkSMS1__messageTextBox"]);

3 个答案:

答案 0 :(得分:1)

请参阅urlencode() - > http://php.net/manual/en/function.urlencode.php

<?php
$text = urlencode($_REQUEST["BulkSMS1__messageTextBox"]);
?>

答案 1 :(得分:0)

您需要对字符进行编码:

http://www.clockworksms.com/blog/the-gsm-character-set/

有了这个,请尝试使用:

utf8_encode()

原因是你要为移动设备而不是网站编码,所以与utf8编码相比,使用url编码是行不通的。

答案 2 :(得分:0)

我用这个来解决我的问题:

$text = str_replace('&', '%26', $_REQUEST["BulkSMS1__messageTextBox"]);