Problème avec la fonction: Preg_Replace [Résolu]

Signaler
Messages postés
66
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
5 mai 2009
-
Messages postés
66
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
5 mai 2009
-
Bonjour,
Je cherche a convertir le texte:
"yk-15" = > "Beaver Creek",
en
array("yk-15", "Beaver Creek"),
à l'aide de Preg_Replace mais je ne suis pas très habile avec cette fonction. Voici ce que j'ai fais:$texte <gras>preg_replace("#"([a-z]+)-([0-9]+)"> "([a-z]+)"#si", "array("\\1-\\2","\\3")", $texte);</gras>
Mais bien sur je n'ai pas le résultat désiré.
Je souhaite utiliser la fonction preg_remplace car j'ai d'autres textes a convertir comme:
"nt-8" => "Hay River",
"nf-12" => "Wabush Lake",

Merci d'avance pour votre aide.

4 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

Quelque chose comme ça ?
preg_replace('`"(.*)" => "(.*)",$`ui', 'array("$1", "$2"),', $texte);

Pas testé à fond, mais ça devrait donner quelque chose de bien, non ?

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Messages postés
66
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
5 mai 2009

Merci mais ceci ne fonctionne pas, après avoir cherché un peut sur le net je suis tombé sur ceci:
<li>^ - The beginning of a line.</li><li>$ - The end of a line.</li><li>a? - The letter "a" is only mentioned once, or not at all (0-1).</li><li>a* - The letter "a" is mentioned at least once, or not at all (0 - 1+).</li>J'ai alors vu qu'il y avait un $ dans l'expression et je l'ai retiré.
Ce qui ma donné:
$ttexte=preg_replace('`"(.*)" => "(.*)",`ui', 'array("$1", "$2"),', $ttexte);
Et tous fonctionne.

Merci beaucoup pour ton aide.
Messages postés
66
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
5 mai 2009

Merci Beaucoup mais il y a un petit problème,
En utilisant:
"qc-168" => "Amos",
"qc-146" => "Amqui",
"qc-38" => "Asbestos",
J'ai:
"qc-168" => "Amos",
"qc-146" => "Amqui",
array("qc-38", "Asbestos"),
L'opération est effectué uniquement sur la dernière ligne.
Quelqu'un a une idée?

Si vous avez bessoin de plus d'information voici mon code
$ttexte=$_POST["texte"];
$ttexte=trim(stripslashes($ttexte)); //J'utilise stripslashes car pour une raison que je ne connais pas (surêment sécurité) PHP ajoute automatiquement des caractères d'échapement devant les guillemets (et trim pour que le résultat soit plus propre).
echo $ttexte;
$ttexte=preg_replace('`"(.*)" => "(.*)",$`ui', 'array("$1", "$2"),', $ttexte);
echo $ttexte;
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

Ah oui, au temps pour moi... J'ai oublié l'option multiligne.

$ttexte=preg_replace('`"(.*)" => "(.*)",$`mui', 'array("$1", "$2"),', $ttexte);

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...