Médiaforma

All posts tagged extraction

Voyons si vous avez compris.

Définissez les instructions nécessaires pour extraire et afficher la date et l’heure de cette chaîne :

$dateEtHeure = "15 Juin 2014 20:12:15";

Solution

Faites une pause dans la vidéo et écrivez le code demandé. Vous pourrez poursuivre la vidéo pour voir la solution.

Les données à extraire sont séparées par des espaces et des “:”. La première donnée est un entier, la deuxième une chaîne, la troisième, la quatrième, la cinquième et la sixième sont des entiers. La chaîne d’extraction est donc la suivante :

"%d %s %d %d:%d:%d"

Les valeurs extraitres sont stockées dans les variables $jour, $mois, $annee, $heures, $minutes et $secondes. Elles sont ensuite affichées avec deux instructions echo.

<?php
  $dateEtHeure = "15 Juin 2014 20:12:15";
  sscanf($dateEtHeure, "%d %s %d %d:%d:%d", $jour, $mois, $annee, $heures, $minutes, $secondes);
  echo "Jour : ".$jour.", Mois : ".$mois.", Année : ".$annee."<br>";
  echo "Heures : ".$heures.", Minutes : ".$minutes.", Secondes : ".$secondes."<br>";
?>

Exécutons ce code dans Wmap server. Le résultat est bien conforme à ce qui était attendu.

 

<p><img src=”https://www.mediaforma.com/uneminuteparjour/phpmysql/images/php-mysql-exercice-sur-la-fonction-sscanf-1.jpg”></p>

<p>

</p>


La fonction sscanf() permet d’extraire des données d’une chaîne en utilisant une ou plusieurs directives de mise en forme :

sscanf(chaine, directives, vex1, … vexN);

Où :

  • chaine est la chaîne qui contient les données à extraire ;
  • directives est une chaîne qui contient une ou plusieurs directives de mise en forme. Les directives utilisables sont identiques à celles utilisées dans l’instruction  printf ;
Directive de mise en forme Effet
%b L’argument est traité comme un entier et affiché en binaire
%c L’argument est traité comme un entier et affiché en tant que code ASCII
%d L’argument est traité comme un entier et affiché en entier base 10 signé
%e L’argument est traité comme une notation scientifique
%E Identique à %e, mais affiché en majuscules
%u L’argument est traité comme un entier et affiché en entier base 10 non signé
%f L’argument est traité comme un nombre à virgule flottante (type float) et affiché comme tel, en tenant compte de la locale
%F L’argument est traité comme un nombre à virgule flottante (type float) et affiché comme tel, sans tenir compte de la locale
%g Equivalent à %e et %f
%G Equivalent à %E et %F
%o L’argument est traité comme un entier et affiché en octal
%s L’argument est traité et affiché comme une chaîne de caractères
%x L’argument est traité comme un entier et affiché en hexadécimal, avec les lettres en minuscules
%X L’argument est traité comme un entier et affiché en hexadécimal, avec les lettres en majuscules
  • vex1 à vexN sont les valeurs extraites en fonctions des directives données dans le deuxième paramètre.

Un exemple va vous aider à y voir plus clair. Ici, nous allons extraire trois données entières de la variable $uneDate et les afficher avec une instruction echo :

<?php
  $uneDate = "12/08/2013";
  sscanf($uneDate, "%d/%d/%d", $jour, $mois, $annee);
  echo "Jour : ".$jour.", Mois : ".$mois.", Année : ".$annee;
?>

Exécutons ce code dans WampServer. Les trois informations de date ont bien été extraites et stockées dans les variables $jour, $mois et $annee.