EDIT: от php5 вверх рекомендуется использовать http_build_query
:
string http_build_query ( mixed $query_data [, string $numeric_prefix [,
string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
Простой пример из руководства:
'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');
echo http_build_query($data) . "\n";
/* output:
foo=bar&baz=boom&cow=milk&php=hypertext+processor
*/
?>
до php5:
CURLOPT_POSTFIELDS
полные данные для публикации в HTTP-режиме «POST». Чтобы опубликовать файл, добавьте имя файла с помощью @ и используйте полный путь. Тип файла может быть явно указан, следуя имени файла с типом в формате '; type = mimetype'. Этот параметр может быть передан как строка с urlencoded, такая как «para1 = val1 & amp; para2 = val2 & amp; ...» или как массив с именем поля в качестве ключа и данными поля как значение. Если значением является массив, заголовок Content-Type будет установлен в multipart / form-data. Начиная с PHP 5.2.0, файлы, переданные этому параметру с префиксом @, должны быть в форме массива для работы.
blockquote>Так что что-то вроде этого должно работать отлично (с параметрами, переданными в ассоциативном массив):
function preparePostFields($array) { $params = array(); foreach ($array as $key => $value) { $params[] = $key . '=' . urlencode($value); } return implode('&', $params); }