recuperer une date dans une chaine

Petit nouveau ! | 9 Messages

01 juil. 2017, 11:17

$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.

Petit nouveau ! | 9 Messages

01 juil. 2017, 11:35

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;

Petit nouveau ! | 9 Messages

01 juil. 2017, 11:54

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;

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

01 juil. 2017, 21:24

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
Quand tout le reste a échoué, lisez le mode d'emploi...