Resultat preg_replace

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Resultat preg_replace

Re: Resultat preg_replace

par FredoMkb » 13 nov. 2010, 19:40

Merci Ryle, je vais regarder tout ça ;)

[edit]
Bon, ça marche très bien (je n'aurai pas pensé d'utiliser les exclusions, c'est pas mal je trouve :) ), mais, un truc me chiffonne, la regex traite également les cas des textes qui ne sont pas entourés de crochets, "uno|dos|tres" par exemple, or je ne souhaite traiter que les textes entre crochets (c'est pourquoi j'étais un peu parti sur une méthode à deux traitements au départ avec le "explode()").
Je ne sais pas si c'est bien faisable, si ce n'est pas le cas, je repartirai sur ma première intuition.
Merci en tout cas Ryle pour ton aide =D>
[/edit]

Re: Resultat preg_replace

par Ryle » 13 nov. 2010, 19:23

Tu peux le faire de différentes façons, en voici déjà une :)
$str = '[un|deux|trois]';
$reg = '#([^\|\[\]]+)#';
preg_match_all($reg, $str, $tab);

Re: Resultat preg_replace

par FredoMkb » 13 nov. 2010, 18:07

Je reviens à la charge ;)

Et si je voulais extraire tous les texte à l'intérieur de la variable "$sTxt" (en omettant les crochets et les "pipes" bien-sûr), avec une seule Regex, sur un "preg_match_all()" par exemple, ce serait quoi le masque le plus approprié et efficace ? :shock:
$sTxt = '[un|deux|trois]';
Merci :)

Re: Resultat preg_replace

par FredoMkb » 13 nov. 2010, 17:37

Tu passes une chaine en 3ème argument de preg_replace, du coup tu récupères une chaine... Ton explode retourne bien un tableau, mais quand celui-ci est renvoyé par la fonction, cela donne la chaine "Array" :)
Ha... d a c c o r d ! :lol:

J'aurais bataillé encore longtemps avant de me rendre compte :?

Merci Ryle pour ton aide =D>

Re: Resultat preg_replace

par Ryle » 13 nov. 2010, 16:30

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
(...)
preg_replace() retourne un tableau si le paramètre subject est un tableau, ou une chaîne sinon.
Tu passes une chaine en 3ème argument de preg_replace, du coup tu récupères une chaine... Ton explode retourne bien un tableau, mais quand celui-ci est renvoyé par la fonction, cela donne la chaine "Array" :)

Resultat preg_replace

par FredoMkb » 13 nov. 2010, 11:54

Bonjour à tous :)

Voici mon petit problème du jour :

Je tente de parser une petite chaîne de caractères avec un "preg_replace", mais je n'obtiens que du texte alors que je devrais avoir un array :shock:

Voici mon petit code :
$sTxt = '[un|deux|trois]';
$sMsq = '!\[(.*)\]!e';
$aRes = preg_replace($sMsq, 'explode("|", "$1")', $sTxt);
Voici le résultat avec "print_r" :
print_r($aRes);
// Array
Et voici un coup de "var_dump" :
var_dump($aRes);
// string(5) "Array"
Comprends vraiment pas :cry: quelqu'un aurait une idée :?:

Merci à tous :)