expression régulière...

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 : expression régulière...

par zeus » 09 nov. 2007, 22:28

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

par bibe83 » 09 nov. 2007, 22:21

Terrible !
Merci...
Allez je me lance avec une certaine apprehension dans les liens..
Encore merci

par Ripat » 07 nov. 2007, 12:14

Il serait utile que tu essayes d'aborder en douceur les regex ou fonctions chaîne de PHP en suivant les liens donnés par @rthur. C'est vraiment utile pour des tas de choses telles que validation de champs de formulaire, mise en forme de texte etc...

Ceci dit, et pour te montrer la puissance du truc voici une solution regex possible (en une seule passe):
preg_replace('#(?<!^)[A-Z0-9]+#', ' $0', $texte)
Remplacera les groupes de majuscules A-Z+ ou groupes de chiffres 0-9+ par espace plus motif SAUF si la majuscule ou chiffre est précédé par l'ancrage de début de chaîne --> assertion arrière négative (?<!^)

Variante pas plus rapide:
preg_replace('#(?<=[a-z])[A-Z0-9]+#', ' $0', $texte)
Remplacera les groupes de majuscules A-Z+ ou groupes de chiffres 0-9+ par espace plus motif UNIQUEMENT pour majuscules ou chiffres est précédés par une minuscule --> assertion arrière positive (?<=[a-z])

Allez, au boulot! :wink:

Et dis-toi bien que les regex sont utilisées par quasi tous les langages modernes. Investissement utile donc.

par bibe83 » 07 nov. 2007, 00:50

OK pour la fonction explode j'ai joué avec et j'obtient ce que je veux...
Mais j'ai découvert un bug dans ma page lorsque j'ai par exemple :
'LeLapinQuiDance(DanceLeSmurf2)' je voudrais que ça me donne
Le Lapin Qui Dance (Dance Le Smurf 2)
Bref faudrait rajouter un truc qui fasse en sorte que si j'ai un chiffre il me le traite comme une majuscule mais attention si j'ai :
'LeLapinQuiDance(DanceLeSmurf22)' dans ce cas faut pas qu'il traite le '22' comme deux chifres mais comme un nombre => Le Lapin Qui Dance (Dance Le Smurf 22).
Je galère vraiment...

par @rthur » 01 nov. 2007, 10:54

merci pour la rapidité
Connaitraiez vous un bon tuto sur ce genre de manipulation de chaîne comprehensible par un novice ?
Encore merci...
Bonjour,

Voila quelques liens:

http://www.phpfrance.com/tutoriaux/inde ... regulieres
http://naholyr.free.fr/regexp.pdf
http://lumadis.be/regex/tuto_pcre.php
http://www.expreg.com

par h0_noMan » 01 nov. 2007, 02:38

tu fais un explode() de ta chaine pour la parenthese ouvrante.

par bibe83 » 01 nov. 2007, 01:32

J'abuse un peu encore...
Comment extraire de la chaine traduite 2 sous chaines :
"Le Lapin Qui Dance" et "Dance La Polka" ?
merci

par bibe83 » 01 nov. 2007, 01:21

merci pour la rapidité
Connaitraiez vous un bon tuto sur ce genre de manipulation de chaîne comprehensible par un novice ?
Encore merci...

par h0_noMan » 01 nov. 2007, 01:11

$test = "LeLapinQuiDance(DanceLaPolka)" ;
$test = ereg_replace("[A-Z]"," \\0", $test);    // Ajoute un espace devant chaque majuscule
$test = str_replace("( "," (",$test);           // Remplace l'espace apres ( par un espace avant
$test = trim($test);                            // Enleves les espaces inutiles en debut et fin de chaine
echo $test ;

expression régulière...

par bibe83 » 01 nov. 2007, 00:56

Bonjour,
Je souhaite transformer une chaine du type:
"LeLapinQuiDance(DanceLaPolka)" en "Le Lapin Qui Dance (Dance La Polka)"
Bref casser la chaine où il y a des majuscules et des parenthèses ouvrantes et y ajouter un blanc avant, mais pas lors de la première majuscule de la chaine.
Je débute alors avec : $chaine=ereg_replace("[[:upper:]]","_",$chaine);
ça me donne " e apin ui ance( ance a olka)...
j'y capte queud...
merci