[Plan du site]
Vous êtes ici ---
> Le Site du Zéro
> Les tutoriels
> Non-Officiels
> Site Web
> PHP
> Points particuliers
> Créer de vrais programmes en PHP > La ligne de commande > Afficher et demander des données
> Lecture du tutoriel
Afficher et demander des données
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Vous avez appris à lancer PHP-CLI, ce cours sera l'occasion de l'utiliser.
On ne peut rien faire avec PHP-CLI, c'est nul !!!
Justement, ce cours abordera l'affichage et la récupération de la saisie pour vous permettre de faire des programmes un minimum interactifs.
Vous vous en doutez sûrement

, nous allons apprendre à utiliser PHP pour afficher du texte.
Ici, il y a deux manières de faire les choses.
Utiliser echo
La plus simple est évidemment l'utilisation d'
echo ou de
print qui permet d'afficher simplement du texte

.
Un petit code d'exemple :
Code : PHP1
2
3 | <?php
echo 'Je suis un programme PHP';
?>
|
Ce qui affichera ...
Code : Console
Bon... pas très original.
Mélanger le texte et le PHP
Ça marche comme avec le HTML : on ferme la balise PHP pour afficher le texte.
Code : PHP1
2
3
4 | Je suis affichée.
<?php
echo 'Moi aussi';
?>
|
On obtient :
Code : Console | Je suis affichée
Moi aussi |
Et voilà

... vous savez déjà comment utiliser les variables dans tout ça, je ne vais pas vous refaire le cours.
Maintenant, vous aimeriez récupérer la saisie de l'utilisateur.
Ben oui, sinon le programme ne sert pas à grand-chose...
Vous aimeriez changer les paramètres dans le code à chaque fois, vous ?
Pour cela, nous allons utiliser les flux d'entrée / sortie standards.
Mais c'est quoi, ces flux d'entrée / sortie ?
En mode CLI, PHP définit trois flux d'entrée / sortie utilisables avec les fonctions de fichiers. Ils sont déjà ouverts, pas besoin d'utiliser
fopen.
Les voici :
- STDIN : c'est l'entrée standard, celle que nous utiliserons dans cette sous-partie. Tout ce que tape l'utilisateur arrive ici.
- STDOUT : c'est la sortie standard, vous l'utilisez pour afficher avec echo
- STDERR : c'est le flux d'erreur standard, les programmes doivent écrire les erreurs ici. Ce sera le sujet de la prochaine sous-partie.
C'est bien beau tout ça, mais je m'en sers comment ?
Un petit exemple vaut mieux qu'un long discours :
Code : PHP1
2
3
4
5 | <?php
echo 'Quel est votre nom : ';
$texte=fgets(STDIN);
echo 'Bonjour '.$texte." !!\n";
?>
|
Et on obtient :
Code : Console | Quel est votre nom : gnomnain
Bonjour gnomnain
!! |
Aaaaaaaaaaaargh, il fait quoi là, ce retour à la ligne ?
Eh ben c'est la faute de la fonction
fgets :
fgets() sert à récupérer une ligne se terminant par un retour à la ligne. Le problème ?
fgets() renvoie toute la ligne, même le caractère de retour à la ligne.
Heureusement, il existe une solution :
rtrim(). Cette fonction sert à enlever les espaces et les retours à la ligne en trop avant et après la chaîne de caractères.
Notre code deviendrait donc :
Code : PHP1
2
3
4
5 | <?php
echo 'Quel est votre nom : ';
$texte=rtrim(fgets(STDIN));
echo 'Bonjour '.$texte." !!\n";
?>
|
Et voilà, vous pouvez maintenant récupérer la saisie de l'utilisateur.
Vous avez vu
STDIN et
STDOUT. Mais
STDERR, on s'en sert comment ?
Comme vous le savez

,
STDERR est la sortie d'erreur standard. Votre programme devra donc y rediriger toutes les erreurs.
Je cite une explication tirée du cours SDL :
Citation : M@teo21
Sous Windows, si vous avez écrit quelque chose dans stderr, alors un fichier stderr.txt sera créé dans le même dossier que votre exécutable. Vous pourrez donc l'ouvrir pour lire l'erreur.
Si vous êtes sous un autre OS, cela dépend de l'endroit où sont stockées les erreurs habituellement.
Par exemple, on peut créer une fonction
erreur() qui sera l'équivalent de
die() pour
STDERR.
Code : PHP1
2
3
4
5
6
7
8
9 | <?php
function erreur($erreur,$code=-1)
{
fputs(STDERR,$erreur);
exit($code);
}
faire_quelquechose() or erreur('Impossible de faire_quelquechose',-1);
?>
|
Comment fonctionne ce code ?
La fonction erreur prend deux paramètres : le texte de l'erreur et la valeur de retour.
Le texte de l'erreur, vous devinez son rôle

: il est écrit dans
STDERR grâce à
fputs().
Le code d'erreur, lui, est renvoyé par le programme. S'il est égal à 0, tout s'est bien passé. Mais les autres valeurs peuvent avoir des significations particulières, par exemple -1 pour indiquer que
faire_quelquechose() a échoué.
Maintenant, vous êtes armés pour créer votre premier "vrai programme" en PHP.
Ce programme sera capable de brouiller une chaîne de caractères et de la décrypter.
La méthode de brouillage
La méthode retenue sera l'échange des lettres deux à deux : la première avec la deuxième, la troisième avec la quatrième...
Un petit exemple : nous allons brouiller la chaîne "
Le site du zéro est super".
Il y a 25 caractères, le dernier restera donc à sa place.
On brouille et on obtient : "
eLs ti eudz ré ose tusepr".
Pas très compréhensible...
Il suffira d'appliquer la même fonction pour le décryptage.
Avant de commencer
Il faudra créer une fonction
brouiller() qui puisse être réutilisée.
Pour accéder à la n-ième lettre d'une chaîne, il faut utiliser la syntaxe :
Code : PHP1
2
3
4 | <?php
$chaine='Test';
$lettre=$chaine[0]; //retourne T
?>
|
Pour PHP, le compte des lettres commence à 0, la lettre numéro 1 sera donc en réalité la deuxième.
Et voilà, vous savez tout. Vous avez une heure

.
Correction
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | <?php
function brouiller($texte)
{
$longueur=strlen($texte);
$permutations=floor($longueur/2); //Nombre de permutations qui seront effectuées, arrondi à l'entier inférieur
for($i=0;$i<$permutations;$i++)
{
//Pour chaque paire de lettres
$lettre=$texte[$i*2]; //On stocke la première lettre
$texte[$i*2]=$texte[$i*2+1]; //On la remplace par la deuxième
$texte[$i*2+1]=$lettre; //Puis on remplace la deuxième par la première
}
return $texte;
}
echo 'Entrez le texte : ';
$texte=rtrim(fgets(STDIN));
echo 'Texte brouillé : '.brouiller($texte)."\n";
echo 'Appuyez sur entrée pour continuer...';
fgets(STDIN);
?>
|
La seule grande nouveauté de ce code :
Code : PHP1
2
3
4 | <?php
echo 'Appuyez sur entrée pour continuer...';
fgets(STDIN);
?>
|
Cette ligne permet d'attendre que l'utilisateur appuie sur une touche avant de quitter. Ça ne sert à rien pour l'instant, mais quand vous utiliserez un raccourci pour exécuter votre code, vous serez bien contents de voir le résultat avant la fermeture de la fenêtre.
Maintenant, vous pouvez faire des programmes plus interactifs.

Par la suite, nous étudierons les arguments.