0

だから私はこのサンプル文字列を持っています:

?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か?

ありがとう

4

3 に答える 3

1

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);
于 2009-11-17T09:44:14.703 に答える
0

クイックパッチは

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

array_unshift($query,'placeholder');
$result=http_build_query($query, 'model_');
$result = substr($result, 19);
....
于 2009-11-17T09:22:54.903 に答える
0

これを試して:

$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);
于 2009-11-17T09:23:35.593 に答える