Langage de programmation PHP
Chapitre 1. Introduction
Chapitre 2. Variables, opérateurs et expressions
Chapitre 3. Instructions de contrôle
Chapitre 4. Tableaux
Chapitre 5. Entrées/Sorties
Chapitre 6. Réutilisation de code
Chapitre 7. Lecture/écriture de fichiers
Chapitre 8. Fonctions diverses
Chapitre 9. Sérialisation
Chapitre 10. Fonctions orientées réseau
Chapitre 11. Base de données
Chapitre 12. Manipulations d’images
Chapitre 13. Programmation objet : PHP et les classes ( PHP 4/PHP 5)
Chapitre 14. Gestion des Exceptions (PHP 5)
Chapitre 15. Contrôle de sessions
Chapitre 16. PHP - Ajax
Chapitre 17. Webservices & SOAP
Chapitre 18. PHP en chiffre
Chapitre 19. Conclusion
Chapitre 20. Bibliographie
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

Chapitre 8. Fonctions diverses

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ématiques

On 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.
Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante