PHP Başka bir dizeye birden çok sınırlayıcı URL dizesi dönüştürmek nasıl?

3 Cevap php

Yani bu örnek dize vardır:

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

Bir URL'den ayıklanır:

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

Ben bu haline dönüştürmek gerekir, ve bana yaşam için ben sıkışmış alıyorum.

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

Ben kadar bu kazanılmış ettik ama o kadar.

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

Çıkış şu anda:

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

Nasıl ilk set model_1 yerine varsayılan olarak alabilirsiniz model_0?

Teşekkürler

3 Cevap

Eğer 1'den başlamak numaralandırma istiyorsanız http_build_query() geçirmeden önce tuşları ile dizi oluşturmak gerekir.

$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);

Hızlı bir yama olmalı

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

array_unshift($query,'placeholder');
$result=http_build_query($query, 'model_');
$result = substr($result, 19);
....

Bu deneyin:

$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);