EDIT : Від php5 вгору http_build_query
рекомендується використовувати:
string http_build_query ( mixed $query_data [, string $numeric_prefix [,
string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
Простий приклад з посібника:
<?php
$data = array('foo'=>'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'. Цей параметр може бути переданий у вигляді рядка, що кодується urlen, як "para1 = val1 & para2 = val2 & ...", або як масив із назвою поля як ключовим, а дані поля - як значення. Якщо значення - це масив, заголовок Content-Type буде встановлено на багаточастинні / форми-дані. Станом на PHP 5.2.0, файли, передані цій опції з префіксом @, повинні працювати у формі масиву для роботи.
Отже, щось подібне повинно працювати ідеально (з параметрами, переданими в асоціативному масиві):
function preparePostFields($array) {
$params = array();
foreach ($array as $key => $value) {
$params[] = $key . '=' . urlencode($value);
}
return implode('&', $params);
}
http_build_query($data)
оскільки&
це роздільник за замовчуванням.