2009-11-17 6 views
0

J'ai donc cette chaîne exemple:Comment convertir une chaîne URL avec plusieurs délimiteurs dans une autre chaîne PHP?

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

extrait d'une URL:

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

je dois le convertir en cela, et pour la vie de moi, je suis en train de coincé. Je suis allé aussi loin, mais c'est tout.

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

sortie est actuellement:

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

Comment puis-je obtenir le premier jeu à être model_1 au lieu de la valeur par défaut model_0?

Merci

+0

Pourquoi n'utilisez-vous pas simplement la chaîne "tel quel"? –

Répondre

0

Un patch rapide devrait être

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

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

Essayez ceci:

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

Vous devez construire le tableau avec les clés avant de passer à http_build_query() si vous voulez que la numérotation commencer par 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); 
Questions connexes