|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Bonsoir à tous,
J'utilise la version 5.2.17 de PHP Voilà mon problème, j'ai des chaînes de caractères à traiter qui correspondent à des dates. Ces chaînes sont de type : du 13/02/2012 au 15/02/2012.2012-01-13T00:00+01002012-01-15T00:00+0100 Avec preg_replace et une expression régulière j'aimerais afficher uniquement ce qu'il y a avant le point, donc ici pour l'exemple : du 13/02/2012 au 15/02/2012 Mais je n'arrive pas à y parvenir... Voici la requête que j'ai fait avec la variable '$date' contenant mon string... Code :
preg_replace('#([\d\w/]*).([.]*)#i',${1},$date); Le résultat de ça n'affiche absolument rien... et j'arrive plus à avancer :-( Si un caïd des PRCE peut m'aider pour ça, ça serait vraiment sympa ! Il se peut que la variable $date soit tout de suite de la forme 'du 13/02/2012 au 15/02/2012' mais malheureusement je ne peux pas le savoir à l'avance donc si selon vous preg_replace n'est pas la bonne méthode pour cela, n'hésitez pas à m'en faire part ! Merci à tous |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Valentin Étudiant Inscription : mai 2011 Messages : 79 ![]() |
Si tu veux savoir de quel format est la date, suffit de compter les caractère avec strlen. Selon la taille, tu as le format de la date.
Ensuite pour ta regex je verrais plus ça preg_replace('#.*\.#i',${1},$date); A essayer, je ne garantis rien, ça fait longtemps que j'ai plus touché à PHP |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Merci de ta réponse !
Je ne peut pas compter le nombre de caractère avec strlen car elle peut être aussi sous la forme : jusqu'au 21/02/2011 J'ai essayé ta regex le problème c'est qu'elle me retourne uniquement ce que je ne veut pas récupérer à savoir : 2012-01-13T00:00+01002012-01-15T00:00+0100 (sans le point devant) Je ne sais pas comment la modifier pour avoir l'inverse mais je sens qu'on y est presque... une idée ? Merci de ta réponse rapide en tout cas ! |
|
|
00
|
|
|
#4 | ||
|
Membre régulier
![]() Valentin Étudiant Inscription : mai 2011 Messages : 79 ![]() |
Dans ce cas la, ta regex est de la forme
Code :
|
||
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
pas de besoin de regex pour ça, un substr + strpos suffisent
il faut vraiment perdre cette mauvaise habitude de voir des regex partout
__________________
http://blog.stealth35.com/ |
|
|
10
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Impeccable pour la regex, ça fonctionne !
je comprends mieux la syntaxe de preg_remplace maintenant ! Merci pour ta réponse en tout cas ça va beaucoup m'aider pour le reste de mon projet ! |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Valentin Étudiant Inscription : mai 2011 Messages : 79 ![]() |
Quel est le mal avec les regex ?
|
|
|
00
|
|
|
#8 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
que c'est complétement inutile ici, puisque les fonctions basiques de php font deja le job, faut pas oublier que les regex prennent beaucoup de ressources (par rapport aux fonctionx basiques)
Code :
__________________
http://blog.stealth35.com/ |
||
|
|
20
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
En effet ! Après avoir consulté la doc PHP
me donne aussi le bon résultat ! Même question que 2h15crew ! En quoi l'utilisation de regex est moins recommandé ? |
|
|
00
|
|
|
#10 |
|
Membre régulier
![]() Valentin Étudiant Inscription : mai 2011 Messages : 79 ![]() |
Ok, my bad =)
|
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
simple bench pour un million de tours avec les fonctions basique c'est 25% plus rapide
__________________
http://blog.stealth35.com/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com