begin process at 2012 05 31 06:17:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

preg_replace déconne


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

preg_replace déconne

mercredi 28 avril 2010 à 17:52:40 | preg_replace déconne

zen69

Bonjour tout le monde,

J'ai un problème étrange... je ne sais pas si juste moi qui est fatigué mais bon.

Je veux créer un lien pour changer de langue dans mon site.

Code PHP :
	$url = array('http://www.gogle.com/?l=fr', 'http://www.gogle.com/?l=eng');
	$pat = array('/l\=eng/', '/l\=fr/');
	$rep = array('l=fr', 'l=eng');
	echo preg_replace($pat, $rep, $url[0]),"<br/>";
	echo preg_replace($pat, $rep, $url[1]),"<br/>";

voici le résultat que j'obtient :
http://www.gogle.com/?l=eng
http://www.gogle.com/?l=eng

la question est pourquoi est-ce que mon preg_replace ne traduit pas le 2e pattern ($pat[1])?


---------------------------------------------------------
Julien B.
mercredi 28 avril 2010 à 21:47:22 | Re : preg_replace déconne

kohntark

Membre Club
Réponse acceptée !
Salut Zen69,

J'ai un problème étrange... je ne sais pas si juste moi qui est fatigué mais bon.


Peut être l'es tu, mais ce "problème" n'est pas si étrange.

Tentative d'explication :

Code PHP :
<?php
$url = 'http://www.gogle.com/?l=eng'; // ou $url[1], c'est juste pour simplifier
$pat = array('/l=eng/', '/l=fr/');
$rep = array('l=fr', 'l=eng');
echo preg_replace($pat, $rep, $url),"<br/>";
?>


Ce qu'il se passe dans le preg_replace :
La fonction recherche le masque "l=eng" ($pat[0])
elle le trouve et le remplace par "l=fr", la chaine résultante est donc :
http://www.gogle.com/?l=fr
elle passe à l'index 1 du tableau $pat pour chercher le masque 'l=fr'
le problème c'est qu'en interne $url n'est plus égal à 'http://www.gogle.com/?l=eng' mais à 'http://www.gogle.com/?l=fr' (remplacement précédent)
elle trouve donc le masque 'l=fr' et le remplace par $rep[1], soit :
http://www.gogle.com/?l=eng

En espérant avoir été clair ...

Cordialement,

Kohntark -

jeudi 29 avril 2010 à 15:26:44 | Re : preg_replace déconne

zen69

Kohntark : Merci, tu as bien vu, c'est exactement ça le problème.

C'est peut-être un peu moins propre... mais voici comment j'ai régler le problème :
$pat = array('/l\=eng/', '/l\=fr/');
//$rep = array('l=fr', 'l=eng');
$rep = array('l=&#102;&#114;', 'l=&#101;&#110;&#103;');
$lang_url = preg_replace($pat, $rep, $lang_url);

** Cette solution peut ne pas être bonne dans une situation différente.


---------------------------------------------------------
Julien B.
jeudi 29 avril 2010 à 15:28:12 | Re : preg_replace déconne

zen69

J'ai oublié de mettre mon code dans un objet code.

Code PHP :
$pat = array('/l\=eng/', '/l\=fr/');
$rep = array('l=&#102;&#114;', 'l=&#101;&#110;&#103;');
$lang_url = preg_replace($pat, $rep, $lang_url);


N'est-ce pas plus clair comme ceci ? :P


---------------------------------------------------------
Julien B.


Cette discussion est classée dans : replace, http, www, preg, eng


Répondre à ce message

Sujets en rapport avec ce message

Header Location [ par BirD ] Hello, dans mon site, j'utilise la fonction header, le code se présente comme suit:$page=2 //exempleheader('location:http://www.monsite.com/mapage.php Derniere page [ par mathieumg ] Il y quelque semianes j'ai posté un message pour savoir comment récupérer la valeur de la dernière page visitée. On m'a indiqué $HTTP_REFER mais cela IP => Région [ par Strike ] Bonjour à tous,Le tutoriel suivant : http://www.phpcs.com/code.aspx?ID=12958permet de déterminer le pays des visiteurs à partir de leur adresse IP.Je Recherche un créateur pour forum avec mon design contre rémunération en affichages ! [ par SkyCrasher ] Le titre en dit beaucoup mais je vais vous détaillez ma démarche :- Il me faut un forum avec :--- espace membre détaillé--- gestion admin détaillé--- Problème de cookie ! [ par webdeb ] Désolé pour le 3e message mais les 2 autres ont des problèmes :Pour voir mon post, veuillez vous rendre iciMerci ! @ bientôt et bon Caddie... [ par romalafrite ] Bonjour à tous,J'aimerais développer un système de panier en ligne, et j'aimerais avoir vos opinions sur ce qui existe déjà, avez vous des conseils, d Classe et panier [ par romalafrite ] http://www.phpcs.com/code.aspx?ID=12931Quelqu'un peut me dire comment récupérer le contenu du panier une fois que la sélection a été faite ?visit inte preg_replace [ par Tomcube ] Est-ce que quelqu'un pourrait me modifier cette ligne pour la faire accepter les retours à la ligne (\n), j'ai trop de mal avec les masques ! $text = preg_replace recursif !! [ par massiliaman ] Salut je voudrais inserer un espace entre groupe de lettre et groupe de chiffre avec preg_replace mais cela de facon recurssive. Je m'explique j'ai en


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales