Использование CURL в PHP для публикации текстовых данных, начиная с "@"

Я использую CURL для публикации данных на PHP следующим образом:

curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 

где $ args – массив параметров.

Проблема в том, что один из параметров имеет значение, начинающееся с «@». И согласно документации CURL, это означает, что я собираюсь отправить файл. Это не так в моем случае. В результате я получаю следующее сообщение об ошибке: не удалось создать данные formpost.

Есть ли способ указать, когда я хочу отправить файл, или «@» – это обычный символ, который является частью некоторого значения?

Спасибо, Гена

Вместо этого вы можете использовать процентное кодирование? Таким образом, ваши символы «@» будут% 40, и CURL не будет с ними связываться. Обычно мы кодируем все поля для заполнения.

http://en.wikipedia.org/wiki/Percent-encoding

Начиная с PHP 5.5, вы можете установить параметр CURLOPT_SAFE_UPLOAD, чтобы предотвратить поведение загрузки файлов для строк, начинающихся с «@». Например.

 $ch = curl_init($url); curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); 

Значение по умолчанию для PHP 5.5.0 неверно, и значение true начинается с 5.6.0

Источник: http://php.net/manual/en/function.curl-setopt.php