Bonjour
Je butte sur la regex pour convertir un pattern de date en pattern SQL
Les pattern d'entrée sont au format
dd-MM-yyyy
MM/dd/yyyy
...
Le pattern de sortie SQL est
%d%M%y
%M%d%y
.....
Peut ton faire cela avec une regex
Merci
Bonjour
Je butte sur la regex pour convertir un pattern de date en pattern SQL
Les pattern d'entrée sont au format
dd-MM-yyyy
MM/dd/yyyy
...
Le pattern de sortie SQL est
%d%M%y
%M%d%y
.....
Peut ton faire cela avec une regex
Merci
Salut,
Pourquoi vouloir faire ceci avec une Regex quand tu as des fonctions natives qui s'en charge ?
La fonction date()
La fonction date_format (PHP 5.2)
La fonction create_date_from_format() (PHP 5.3 mais tu trouvera des équivalents PHP5.2 dans la doc)
Bonjour,
Sinon, pour apprendre:
de dd-MM-yyyy à %d%M%y
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $dateApres = preg_replace('/^(.{2})-(.{2})-(.{4})$/','$1%$2%$3', $dateAvant);
Les regex peuvent être très onéreuses au niveau perf, aussi faut-il être les plus restrictif possible sur les motifs.
Ainsi, le caractère "." ne doit être utilisé qu'en dernier recours. Dans ton exemple, le poin devra être remplacé par le métacaractère \d car il s'agit obligatoirement de nombre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $dateApres = preg_replace('/^(\d\d)-(\d\d)-(\d{4})$/','%$1%$2%$3', $dateAvant);
Oui, merci,
J'en suis qu'à la première partie du cours sur les regex et alors vivement la deuxième
Duu coup, je vais déjà changer mes anciens codes (pour y regarder de plus près cette amélioration)
![]()
Bonsoir
A RideKick: non je connais les fonctions de PHP mais je ne cherche pas à exploiter les dates de la base de données mais à construire un texte d'une requête SQL. La sortie est donc du texte %d%M%y
Il faut donc que la requête élimine les lettres en double, enleve le caractère séparateur (qui peut être n'importe quelle caractère) et ajoute le signe % devant chaque
A Fench
Ta requete ne renvoi pas le bon format elle retourne %dd%MM%yyyy alors qu'il me faut %d%M%y
a snafu
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dateApres = preg_replace('/^(.{2})-(.{2})-(.{4})$/','%$1%$2%$3', $dateAvant);
Comme dit plus haut, je ne cherche pas à travailler sur les dates mais sur le pattern
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dateApres = preg_replace('/^(\d\d)-(\d\d)-(\d{4})$/','%$1%$2%$3', $dateAvant);
Merci à tous
Partager