8.1 Fonctions de traitement sur des données
Il
est fréquent d’avoir des fichiers contenant différents champs séparés
par un délimiteur quelconque. Une fonction très utile dans ces cas là
est la fonction explode. Sa syntaxe est la suivante
explode (“ caractère délimiteur ”, chaîne de donnée)
Prenons un exemple avec l’extrait de fichier suivant
:
Roose | Philippe | Iut Informatique | Bayonne | Informatique
Goudin | David | LaBri | Bordeaux | Calcul Parallèle
Ce
fichier décrit des enseignants avec leur nom, prénom, lieu de poste,
matière principale. Si l’on souhaite afficher ce fichier d’une manière
“ plus jolie ”, il est nécessaire de récupérer champs après champs et
d’afficher chacun d’eux comme désiré. Sans la méthode
explode, il serait nécessaire de récupérer caractère par caractère, tester si le séparateur est atteint, si oui, …
explode
réalise ce travail pour nous en retournant dans un tableau l’ensemble
des champs. Il ne reste plus qu’à “ boucler ” sur ce tableau pour
récupérer les valeurs et les traiter.
Il est à noter qu’il existe sa réciproque, la fonction
implode qui retourne une chaîne et qui accepte en paramètre un tableau et un délimiteur (qui peut être lui même une chaîne).
Il existe une variante à
explode appelée
strok() (ok pour token) qui contrairement à
explode qui réalise le découpage en une fois, le réalise ici à chaque itération :
$token = strok($mavariable,'' | '');
while ($token != ' ') {
print $token. ''<br>'';
$token = strok($mavariable,'' | '');
}
L’ensemble des fonctions “ classiques ” rencontrées en C sur les chaînes se retrouvent également en PHP. On y retrouve ainsi : strlen, strcmp, strcasecmp(idem strcmp, mais respecte la casse), mais aussi :
- strpos (chaîne, sous chaîne) : retourne la position de la sous chaîne dans la chaîne. Dans le cas où la chaîne existe en plusieurs exemplaires, c’est la position de la première occurrence qui est retournée. strrpos retourne quand à elle la position de la dernière occurrence.
- strstr (chaîne, sous chaîne) retourne la portion de la chaîne à partir de la première occurrence de la sous chaîne.
- str_replace (chaîne à remplacer, nouvelle chaîne, chaîne complète) : Permet de remplacer une sous chaîne par une autre dans une chaîne de caractères. Il est à noter que la chaîne à remplacer peut, également être un tableau de chaîne afin de contenir par exemple une liste de termes à remplacer par un seul unique autre.
- foreach (nom tableau) : A chaque appel, cette fonction retourne la valeur suivante du tableau.
- strlen (chaîne) : retourne la taille de la chaîne.
- strtolower|strtoupper (chaîne) : retourne la chaîne passée en paramètres an minuscules (resp. majuscules).
- ucfirst (chaîne) : permet de mettre en majuscule la première lettre de la chaîne.
- ucwords(chaîne) : met en majuscule la première lettre de chaque mot.
- str_replace (car d’origine, car de destination, chaîne) : remplace le caractère d’origine par le caractère de destination dans la chaîne.
- trim(chaîne) : supprime les caractères invisibles (espaces,\n, …) au début et à la fin de la chaîne. Il existe ltrim et rtrim qui réalisent la même chose mais uniquement pour les blancs à gauche ou à droite.
- nl2br (chaîne) : remplace chaque caractère de nouvelle ligne par son code HTML. Sur la versions antérieurs à PHP 4.05, c'est <BR> qui est mis, sinon, c'est le code en XHTML <BR /> qui est alors ajouté.
- ereg(chaîne à chercher, chaîne) : retourne vrai si la chaîne à chercher (sous forme de chaîne ou sous forme d’expression régulière) est contenue dans chaîne. Le format des expressions régulières peut être au format POSIX et Perl (POSIX et celui par défaut).
- addslashes (chaîne)/stripslashes(chaîne) : ces deux fonctions retournent la chaîne passée en paramètre en ajoutant/retirant des caractères d'échappement devant chaque caractère spécial. Il est possible que la version de PHP le fasse automatiquement si la directive de compilation magic_quote_gpc est activée (elle l'est sur les versions récentes). Il est possible de le vérifier avec la fonction magic_quote_gpc().
Il
est fréquent d'avoir à retourner des guillemets vers le navigateur, le
problème est qu'il faut ajouter un caractère d'échappement devant
chaque :
print ''ceci sont des ''guillemets''
''; // syntaxe invalide
print ''ceci sont des \''guillemets\'' ''; // syntaxe valide
mais lourde
print ''ceci sont des 'guillemets' ''; // syntaxe valide
print 'ceci sont des ''guillemets'' '; // syntaxe valide
|
8.2 Fonctions mathématiquesOn retrouve en PHP l’ensemble des fonctions mathématiques que l’on retrouve en C, à savoir :
abs, cos, sin, tan, acos, …, exp, sqrt, …
Ces fonctions acceptent un nombre en paramètre et retournent, la valeur
absolue, le cosinus, le sinus, la tangente, l’arc cosinus, …, le carré,
la racine carrée, …
Il existe également une fonction pi( ) retournant une valeur approchée de PI.
8.3 Gestion de date, heure, temps
Dans ce domaine également, PHP fournit un ensemble
de fonctions particulièrement appréciables
comme date(format).
Les codes des formats de date sont les suivants :
Code | Description |
a A d D h H i j l m M S U y Y z | am ou pm AM ou PM Jour du mois avec suppression des 0 Jour de la semaine, abrégé en trois lettres Nom du mois Heure, de 1 à 12 Heure, de 0 à 24 Minutes Jour du mois, avec conservation des 0 Jour de la semaine Chiffre du mois Abréviation du nom du mois Suffixe ordinal pour le jour du mois Nombre de secondes depuis le 1/1/1970 Année, sur 2 unités Année, sur 4 unités Jour de l’année |
Exemple d’utilisation
< ? $ladate=date(‘’ l j F Y’’); $lheure=date(‘’h : i - a’’) ; print ‘’Nous sommes le $ladate <BR>’’ ; print ‘’Il est : $lheure <BR>’’ ; ?> Affichera : Nous sommes le Thursday 16 November 2000 Il est : 08:56 - am |
Il est une autre fonction qui peut avoir son utilité, c’est la fonction
sleep(nombre de secondes) qui réalise une pause dans l’exécution du script. La fonction
usleep fait de même, mais l’unité est la milliseconde.
8.4 Fonctions orientées serveur
Il est possible d'exécuter des commandes système directement sur le serveur :
- passthru(commande)/system(commande) : permet d'exécuter une commande sur le serveur et de visualiser le résultat sur la sortie standard (exemple : passthru("ls-l"); donnera à l'écran la liste des fichiers du répertoire contenant le script où est située cette instruction). passthru retourne les résultats à la fin de l'exécution de la commande alors que system essaie de les envoyer au fur et à mesure qu'ils sont retournés.
- exec (commande[, resultat]) :
réalise la même chose que précédemment mais sans écho sur la sortie
standard. Si le second paramètre est donné, il contiendra un tableau de
chaînes avec chaque ligne du résultat.