# Séance 3 : Formatage et fonctions pratiques en PHP

PHP propose de nombreuses fonctions qui permettent d'effectuer des tâches récurrentes dans la mise en forme de donnes. On trouve par exemple des fonctions capables de transformer des minuscules en majuscules et réciproquement, de formatter des nombres ou encore manipuler des dates.

Il existe de très nombreuses fonctions que vous pouvez retrouver sur la [documentation officielle de PHP](https://php.net)

## Manipulation des textes

* strtolower($chaine) : <http://php.net/manual/fr/function.strtolower.php>. Permet de convertir $chaine en minusucule.
* strtoupper($chaine) : <http://php.net/manual/fr/function.strtoupper.php>. Permet de convertir $chaine en majuscule
* strlen($chaine) : <http://php.net/manual/fr/function.strlen.php>. Permet de connaître la longueur de $chaine

**Ces fonctions manipulent les textes selon la "locale" du serveur, et sans considérer les caractères accentuées.**

Il est ainsi recommandé de privilégier les fonctions issues de la librairie "mb" qui gère l'Unicode et qui permet une prise en compte de tous les caractères.

* mb\_strtolower($chaine) : <http://php.net/manual/fr/function.mb-strtolower.php>. Permet de convertir $chaine en minusucule.
* mb\_strtoupper($chaine) : <http://php.net/manual/fr/function.mb-strtoupper.php>. Permet de convertir $chaine en majuscule
* mb\_strlen($chaine) : <http://php.net/manual/fr/function.mb-strlen.php>. Permet de connaître la longueur de $chaine

## Manipulation des nombres

* number\_format($nombre) : <http://php.net/manual/fr/function.number-format.php>. Permet de formatter $nombre (nombre de chiffre après la virgule, séparateur de millier, de décimal, ...)

## Manipulation des dates

Il est d'usage en informatique de manipuler le $timestamp. Le timestamp (unix) désigne le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC précise. Utiliser un timestamp est plus simple que de manipuler une date formatée, notamment pour effectuer des opérations (différence entre deux dates).

* date(-format-, $timestamp) : <http://php.net/manual/fr/function.date.php>. Permet de formater une date. Si on ne précise pas de valeur de date (le second argument $timestamp), alors le résultat sera la date du jour formatée.
* <https://www.php.net/manual/fr/function.strftime.php>
* strtotime() : <http://php.net/manual/fr/function.strtotime.php>.

```php
// La variable $today sera égale au timestamp d'aujourd'hui 0h00
$today = strtotime ('today');
// La variable $tomorrow sera égale au timestamp de demain 19h00
$tomorrow = strtotime ('tomorrow 19:00');
// La variable $special sera égale au timestamp du {{date-|1 janvier 1970}} plus deux jours et trois heures
$special = strtotime ('01/01/1970 +2 days +3 hours');
```

## Exercices

### Tests

* Tester chacune des fonctions décrites sur des exemples de votre choix. Faire valider l'exercice.
* Manipulation de dates:
  * Afficher la date au format français ainsi que l'heure avec les minutes et les secondes, exemple: Nous sommes le 12/11/2019, Il est 11:52:05.
  * Afficher le timestamp de votre date de naissance, exemple : je suis né(e) le 12/10/1990, soit 660783600
  * Ecrire une fonction qui permet d'afficher la date au format français : Exemple : Nous sommes le lundi 25 septembre 2017.

## DUTAF

* Intégrer au moins une fonction de formatage de nombre dans votre catalogue DUTAF
* Intégrer au moins une fonction de formatage de texte dans votre catalogue DUTAF
* Intégrer au moins une fonction de formatage de date dans votre catalogue DUTAF


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cours.davidannebicque.fr/m2202/seance-3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
