recuperer une date dans une chaine
Posté : 01 juil. 2017, 11:17
par Lisstech
$chaine="Bonjour j'ai donc une chaine qui est du texte avec une date a l'interrieur par exemple: 2017-05-12 , comment recuperer cette date ";
2017-05-12
IL faut récuperer la valeur 2017 puis les 6 caractéres (le mois et le jour et les tirets) suivant cette valeur. (bien entendu , de ce fait , en 2018, il me faudra modifier le code)
avec preg_match il y a plein de solution possible mais j'ai tournicoter sans vraiment maitriser.
Merci si vous avez une petite idee pour m'aiguiller.
Re: recuperer une date dans une chaine
Posté : 01 juil. 2017, 11:35
par Lisstech
Je suis pas tres loin, mais comment ne prendre que la date et non tout le début de la chaine.
Code : Tout sélectionner
$chaine="Bonjour j'ai donc une chaine qui est du texte avec une date a l'interrieur par exemple: 2017-05-12 , comment recuperer cette date ";
$recherche = '2017';
$resultat = substr($chaine, 10, strpos($chaine, $recherche)); // $result = php
echo $resultat;
Re: recuperer une date dans une chaine
Posté : 01 juil. 2017, 11:54
par Lisstech
Pas propre mais si je rajoute un aute substr , ca marche quand meme
Code : Tout sélectionner
$chaine="Bonjour j'ai donc une chaine qui est du texte avec une date a l'interrieur par exemple: 2017-05-12 , comment recuperer cette date ";
$recherche = '2017';
$resultat = substr($chaine, 10, strpos($chaine, $recherche)); // $result = php
$resultat = substr($resultat, -10);
echo $resultat;
Re: recuperer une date dans une chaine
Posté : 01 juil. 2017, 21:24
par @rthur
Bonjour,
Effectivement, c'est vraiment dans ce cas là qu'il faut utiliser une expression régulière (regex) avec preg_match()
<?php
$chaine="Bonjour j'ai donc une chaine qui est du texte avec une date a l'interrieur par exemple: 2017-05-12 , comment recuperer cette date ";
preg_match("`([0-9]{4}-[0-9]{2}-[0-9]{2})`", $chaine, $res_regex);
echo $res_regex[1];
Tu peux tester la regex avec le super outil regex101 :
https://regex101.com/r/fLetpu/1