Как использовать специальные символы в тексте для функций CURL - PullRequest
0 голосов
/ 19 сентября 2018

Я интегрировал SMS-шлюз и использую функции curl для отправки SMS.В тексте, который я отправляю, у меня есть '@' symbol, из-за которого функция curl не работает.

Мой текст

$smsbody = "A new user has logged in\nEmail: testemail@gmail.com";

Ниже мой код:

       $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "{
        \"Text\": \"$smsbody\",
        \"Number\": \"$tomobile\",
        \"SenderId\": \"Example\",
        \"DRNotifyUrl\": \"https://www.example.com\",
        \"DRNotifyHttpMethod\": \"POST\",
        \"Tool\": \"API\"
        }");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Content-Type: application/json",
        "Authorization: ".$smsauthor
        ));
        $response = curl_exec($ch);
        curl_close($ch);

Если я уберу символ «@», я смогу успешно отправить сообщение.Для сообщений с символом «@» сообщение становится неудачным.Как закодировать символ «@» или что может быть альтернативой для этой проблемы?

1 Ответ

0 голосов
/ 19 сентября 2018

Использовать curl_escape (ресурс $ ch, строка $ str) . Документы

Эта функция URL кодирует данную строку в соответствии с » RFC 3986 .

Использование:

<?php
// Create a curl handle
$ch = curl_init();

// Escape a string used as a GET parameter
$location = curl_escape($ch, 'Hofbräuhaus / München');
// Result: Hofbr%C3%A4uhaus%20%2F%20M%C3%BCnchen

// Compose an URL with the escaped string
$url = "http://example.com/add_location.php?location={$location}";
// Result: http://example.com/add_location.php?location=Hofbr%C3%A4uhaus%20%2F%20M%C3%BCnchen

// Send HTTP request and close the handle
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl

_close($ch);
?>
...