Fort en Regex ?

WRInaute occasionnel
Salut

J'ai une chaine (en fait une url) ou je veux enlever, a partir d'un repere, les 32 caracteres suivants.

ex : pg=home&s=3bc6b2c6cdd2252dc7c11bce6394dd6d&t=1
Je veux recuperer : pg=home&t=1

Donc le repere c'est '&s=' et les 32 caracteres c'est ce num de session.

Avec des regex, y a un moyen de faire ca simplement ?

Merci
Olivier
 
WRInaute discret
Hello,

C'est peut être idiot comme réponse, mais s'il s'agit de paramètres dans l'URL pourquoi ne pas les récupérer avec $_GET et reconstruire une chaîne de caractères avec les paramètres voulus ?
 
WRInaute occasionnel
Ben reconstruire sans la partie que je veux est faisable en 5 ou 6 lignes. Avec les regex en 1 seule... prefectionniste moi ?
 
WRInaute discret
bon ... je l'ai en 2 lignes :
avec $string = 'pg=home&s=3bc6b2c6cdd2252dc7c11bce6394dd6d&t=1';
Code:
ereg ("(pg)=([a-zA-z]*)&(s)=([0-9a-zA-z]*)&(t)=([0-9]*)", $string, $regs);
$url = $regs[1].'='.$regs[2].'&'.$regs[5].'='.$regs[6];

le problème c'est que ça ne marche que si les paramètres sont dans ce sens exact !
 
WRInaute discret
ah ... en 1 ligne et moins sensible à l'ordre des paramètres :

Code:
$url = ereg_replace("&s=([0-9a-zA-z])*","",$string);

c'est sûrement améliorable, parce que là si s= est en premier (donc sans &) ça ne marche plus !
 
WRInaute occasionnel
Il suffit de rajouter un ampersand devant...

Code:
$url = ereg_replace("&s=([0-9a-zA-z])*", "", '&'.$string);
 
WRInaute discret
... et avec un substr on récupère la chaîne sans le & initial !
Code:
$url = substr(ereg_replace("&s=([0-9a-zA-z])*", "", '&'.$string),1)
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut