Как преобразовать строку URL с несколькими разделителями в другую строку в PHP? - PullRequest
0 голосов
/ 17 ноября 2009

Итак, у меня есть пример строки:

?items=3744130|1^356221|2^356222|1

извлечено из URL:

http://www.example.com/process.php?items=3744130|1^356221|2^356222|1

Мне нужно преобразовать это в это, и ради жизни я застреваю.

?items=model_1=3744130&qty_1=1&model_2=356221&qty_2=2&model_3=356222&qty_3=1

Я зашел так далеко, но это все.

$url = substr($_SERVER['QUERY_STRING'],6); 
$query = explode('^', $url); 
echo http_build_query($query, 'model_');

В настоящее время вывод:

model_0=1234435%7C9&model_1=56788%7C9&model_2=6758765%7C9&model_3=3736543%7C9

Как получить первый набор model_1 вместо значения по умолчанию model_0?

Спасибо

Ответы [ 3 ]

1 голос
/ 17 ноября 2009

Вам нужно построить массив с ключами, прежде чем передавать его на http_build_query(), если вы хотите, чтобы нумерация начиналась с 1.

$arr = array();
$count = 1;

foreach (explode('|', $_GET['items']) as $item) {
  $elements = explode('^', $item);
  if (count($elements) == 1) {
    $arr["model_$count"] = $elements[0];
    $arr["qty_$count"] = 1;
  }
  else {
    $arr["model_$count"] = $elements[1];
    $arr["qty_$count"] = $elements[0];
  }
  $count++;
}

$query = http_build_query($arr);
0 голосов
/ 17 ноября 2009

Попробуйте это:

$items = explode('^', $_GET['items']);
$query = '';
foreach ($items as $key => $val) {
    list($model, $qty) = explode('|', $val);
    $query .= '&model_'.($key+1).'='.urlencode($model);
    $query .= '&qty_'.($key+1).'='.urlencode($qty);
}
echo substr($query, 1);
0 голосов
/ 17 ноября 2009

Быстрый патч должен быть

....
$url = substr($_SERVER['QUERY_STRING'],6);
$query = explode('^', $url);

array_unshift($query,'placeholder');
$result=http_build_query($query, 'model_');
$result = substr($result, 19);
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...