Page 1 sur 1

Expressions régulières

Publié : 14 juin 2007, 09:28
par guilhem_mdg
Bonjour,

Je souhaite remplacer tous les espaces avant les ":" par des espaces insécables. Ex. :

Code : Tout sélectionner

"toto :" devient "toto :"
Mais pas si "::" :

Code : Tout sélectionner

"toto ::" reste "toto ::"
Comment faire en PHP avec les expressions régulières ?
Genre : $chaine=preg_replace('` :[^:]`'," ",$chaine);

Merci de votre aide !

Guilhem.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

Re: Expressions régulières

Publié : 14 juin 2007, 10:18
par calimo
guilhem_mdg a écrit :Genre : $chaine=preg_replace('` :[^:]`'," ",$chaine);
En quoi ça ne va pas ? L'expression me semble correcte...

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

Re: Expressions régulières

Publié : 14 juin 2007, 10:24
par Asumbaa
Salut,
calimo a écrit :
guilhem_mdg a écrit :Genre : $chaine=preg_replace('` :[^:]`'," ",$chaine);
En quoi ça ne va pas ? L'expression me semble correcte...
A première vue, il manque au moins un : dans l'expression de remplacement :

Code : Tout sélectionner

$chaine=preg_replace('` :[^:]`'," :",$chaine);

Publié : 14 juin 2007, 10:50
par guilhem_mdg
Oui c vrai il manque un : dans l'expression mais c surtout qu'il ne me fait pas le remplacement si il n'y a rien après le :
par ocntre il me le fait bien si par ex. :k

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

Publié : 14 juin 2007, 11:37
par calimo
guilhem_mdg a écrit :Oui c vrai il manque un : dans l'expression mais c surtout qu'il ne me fait pas le remplacement si il n'y a rien après le :
par ocntre il me le fait bien si par ex. :k
Ah, ben quand tu dirras tout :lol:

Ceci fonctionne en perl :

Code : Tout sélectionner

$chaine =~ s/ :([^:]|$)/ :\1/g;
$ indique la fin de la chaine ("si il n'y a rien après " :"). Puis grâce à la parenthèse, on capture le caractère "non :" et on le remets.

Ce qui, en php, pourrait donner

Code : Tout sélectionner

$chaine=preg_replace('` :([^:]|$)`'," :$1",$chaine);
(non vérifié).

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

[Résolu] Expressions régulières

Publié : 14 juin 2007, 12:20
par guilhem_mdg
Nickel Calimo merci ! :D

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

Publié : 14 juin 2007, 12:23
par HP
calimo a écrit :Ceci fonctionne en perl :

Code : Tout sélectionner

$chaine =~ s/ :([^:]|$)/ :\1/g;
$ indique la fin de la chaine ("si il n'y a rien après " :"). Puis grâce à la parenthèse, on capture le caractère "non :" et on le remets.
ah ouais, ça me fait penser à un truc, sous UNIX le Terminal peut exécuter du Perl ?
je sais qu'on peut faire du Python, mais perl ça semble sympa aussi :)

Publié : 14 juin 2007, 12:50
par calimo
HP a écrit :
calimo a écrit :Ceci fonctionne en perl :

Code : Tout sélectionner

$chaine =~ s/ :([^:]|$)/ :\1/g;
$ indique la fin de la chaine ("si il n'y a rien après " :"). Puis grâce à la parenthèse, on capture le caractère "non :" et on le remets.
ah ouais, ça me fait penser à un truc, sous UNIX le Terminal peut exécuter du Perl ?
Je ne comprend pas trop la question...
Un terminal peut exécuter n'importe quel interpréteur de ligne de commande. Bien sur par défaut c'est bash, mais tu peux y mettre ce que tu veux, y-compris du perl (c'est ce qui se passe lorsque tu tapes juste "perl" (sans les guillemets) dans ton shell... mais tu peux aussi faire du php si tu veux :) (jamais essayé le python, donc je peux pas comparer malheureusement...)


Juste pour préciser encore, je ne suis pas sûr que la ligne php remplace toutes les occurences (g, global) ou seulement la première... le manuel php n'est pas très clair à ce sujet (pas qu'à celui-ci d'ailleurs :lol: )

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4

Publié : 14 juin 2007, 13:11
par HP
par simple curiosité j'ai essayé çà :

Code : Tout sélectionner

$ perl -e 'my (undef, undef, undef, $d, $m, $y) = localtime;  my $date = sprintf("%4d-%02d-%02d", $y+1900, $m+1, $d); print $date'
ça semble ok : 2007-06-14

bon bé cool !
je vais essayer php en y étant :)

Publié : 14 juin 2007, 13:19
par HP
et un bête :

Code : Tout sélectionner

$ php -help

Code : Tout sélectionner

Usage: php [options] [-f] <file> [args...]
       php [options] -r <code> [args...]
       php [options] [-- args...]
  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.
j'aurais pu y penser tout de suite… à force… :roll:

cool de pouvoir faire des vérifications de syntaxe sur un fichier par une simple ligne de commande !