Reconstruire une Url après un "parse_str"...

Eléphant du PHP | 224 Messages

27 avr. 2007, 15:20

Bonjour à tous :)

Voilà, je récupère une adresse Url, puis je réalise quelques modifications dans les variables existantes, puis, fatalement, je souhite reconstruire l'adresse Url toute neuve et propre, mais je n'y arrive pas :(

J'ai trouvé la fonction "http_build_query()" qui aurait pu me rendre service, mais elle n'est compatible qu'à partir de Php 5, or je voudrais que mon code reste compatible Php 4.x...

Voilà, je coince :shock:

Voici où j'en suis en ce moment :
$theUrl = 'http://monsite.fr/index.php?section=5&date=2006-12-01';
$urlParse = parse_url($theUrl); 
parse_str($urlParse['query'], $urlQuery);
print_r($urlQuery); // Array ( [section] => 5 [date] => 2006-12-01 )
$urlQuery['section']='2';
$urlQuery['date']='2007-04-01';
print_r($urlQuery); // Array ( [section] => 2 [date] => 2007-04-01 ) 
Maintenant, je voudrais reconstruire ma variable "theUrl" avec les nouvelles valeurs attribuées aux variables "section" et "date"... mais je ne trouve pas... :(

Euh... :shock: quelqu'un aurait une petite piste ?

Merci... à+ :)
Modifié en dernier par FredoMkb le 27 avr. 2007, 18:36, modifié 1 fois.
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Mammouth du PHP | 991 Messages

27 avr. 2007, 15:26

euh ben pourquoi pas :
$theUrl = 'http://monsite.fr/index.php?section=5&date=2006-12-01';
$urlParse = parse_url($theUrl); 
parse_str($urlParse['query'], $urlQuery);
print_r($urlQuery); // Array ( [section] => 5 [date] => 2006-12-01 )
$urlQuery['section']='2';
$urlQuery['date']='2007-04-01';
$theUrl = 'http://monsite.fr/index.php?section='$urlQuery['section'].'&date='.$urlQuery['date'];
DevOps, Symfony4, Hoa

Eléphant du PHP | 224 Messages

27 avr. 2007, 15:58

Re...
euh ben pourquoi pas :
$theUrl = 'http://monsite.fr/index.php?section='$urlQuery['section'].'&date='.$urlQuery['date'];
Ha oui... pourquoi pas ;)

Seulement, la valeur de la variable "theUrl" est récupérée de manière dynamique, et je ne sais pas à-priori ce qu'elle peut contenir... évidemment, je n'ai posté qu'une petite partie, simplifiée, de l'ensemble de mon code, histoire de bien cibler ma question...

Bref, à partir d'une adresse Url récupérée dynamiquement, je souhaite changer la valeur de quelques éventuelles variables présentes, puis construire un simple lien Url avec la nouvelle adresse complète, du type :
$theLink = '<a href="'.$theNewUrl.'">Cliquez ici</a>';
Donc, j'arrive à isoler les variables issues de l'Url, j'arrive à changer leur valeur, mais je n'arrive pas à reconstruire l'Url entière de départ avec les nouvelles valeurs... je dois certainement zaper quelque chose, mais là je suis un peu perdu je l'avoue :(

Merci en tout cas pour ta réponse... je continue à chercher... à+ :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Mammouth du PHP | 991 Messages

27 avr. 2007, 16:07

tu peux te tourner vers les expression reguliere afin de répondre a tous les cas de figure :wink:
DevOps, Symfony4, Hoa

Eléphant du PHP | 259 Messages

27 avr. 2007, 16:29

hello,

tiens teste ça ->
function lru_ersap( $tab , $ref = null ){
	$out = array();
	foreach( $tab as $key=>$value ){
		if( is_array( $value ) $out[] = lru_ersap( $value , $key );
		else{
			if( empty( $ref ) ) $out[] = $key . '=' . $value;
			else $out[] = $ref.'['. $key. ']=' . $value;
		}
	}
	return implode( '&' , $out );
}
achtung, c'est écrit à la volée et pas testé (donc sans garantie de fonctionnement ni d'erreurs à corriger)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 avr. 2007, 16:46

Y a au moins une erreur dans le nom de la fonction... ca devrait être lru_esrap() ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 224 Messages

27 avr. 2007, 16:53

Bonjour Jules :)
hello,

tiens teste ça ->
function lru_ersap( $tab , $ref = null ){
	$out = array();
	foreach( $tab as $key=>$value ){
		if( is_array( $value ) $out[] = lru_ersap( $value , $key );
		else{
			if( empty( $ref ) ) $out[] = $key . '=' . $value;
			else $out[] = $ref.'['. $key. ']=' . $value;
		}
	}
	return implode( '&' , $out );
}
Wouw wouw... :shock: une fonction recursive et tout et tout... :!:

Bein, je vais tester, mais, euh... :? ...je me demande, il n'y aurait pas quelque chose d'un peu plus simple quand-même ? :shock:

Je trouve ça bizarre que ce soit aussi simple de décomposer une adresse Url et si compliqué à la recomposer... bref... s'il y a d'autres idées, je suis toujours preneur...

Merci beaucoup en tout cas Jules pour ta solution, je vais tester ça dès que possible... à+ :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Eléphant du PHP | 259 Messages

27 avr. 2007, 18:43

@Mr Ryle : ouais rooh ça va ! groumpf...
tiens au fait... mais qui est le chevalier blanc, ça marche ici aussi ?

@Fredo : Y'a surement plus simple en fait :)
c'est juste que j'avais rien de mieux à faire à ce moment là que de faire un truc compliqué pour faire une chose simple ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 avr. 2007, 12:21

@Julot : bah tiens, bien sur que ça fonctionne ici aussi ;)

On m appelle le chevalier blanc... yé vé zé yé vole au secours d'innocents!
Quand dans la campagne résonne la poudre, yé vé zé vole plus vite que la foudre!
Mon épée est prête à servir, L'ennemi n'a qu'à se tenir.
De chacun yé souis repecté, du paysan au chevalieeeer...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...