1. Préambule

2. Généralités

3. Installation

4. Apprentissage

5. PHP : Nombres

6. PHP : Chaines

7. PHP : Tableaux

8. PHP : Variables

9. PHP : Classes

10. PHP : Constantes

11. PHP : Fonctions

12. PHP : Dates

13. PHP : Fichiers

14. PHP : Réseau

15. PHP : Cookies

16. PHP : Sessions

17. PHP : Math

18. PHP : Mail

19. PHP : Regex

20. PHP : Database

21. PHP : Divers

22. PHP : Erreurs

23. PHP : Sécurité

24. Formulaires

25. Outils et solutions

26. Scripts et applications

27. Remerciements


1. Préambule

Contenu de cette section

1.1 Présentation

Cette FAQ (Foire Aux Questions ou Frequently Asked Questions) traite de PHP.

Elle a pour but de répondre aux interrogations d'ordre général, mais aussi aux problèmes que peuvent poser l'installation, l'apprentissage et la programmation de ce langage.

1.2 Rédaction

L'ensemble du document a été rédigé et mis en page à l'aide de phpFAQTory. Cet outil permet de simplifier la rédaction et la maintenance d'un document de type FAQ, HOW-TO, ou de tout autre document articulé autour d'une logique : Index, Chapitre, Question / Réponse.

Basé sur PHP et MySQL, phpFAQTory est librement disponible sous licence GPL sur le site PHPIndex (http://archives.phpindex.com/projets/projets_presentation.php3?n=2).

Une version de démonstration est visible sur http://phpfaqtory.phpindex.com (login : guest / password : guest).

1.3 Distribution

Il n'existe qu'un seul site officiel de distribution de ce document : le site PHPIndex (http://archives.phpindex.com). C'est le seul site sur lequel vous êtes certain de trouver la dernière version de ce document.

1.4 Formats

Ce document est disponible en plusieurs formats :

- HTML Simple : une page unique
- HTML Multiple : index + une page par chapitre
- XML

Une version de cette FAQ dans ces différents formats est disponible sur PHPIndex (http://archives.phpindex.com/faq/)

D'autres formats sont susceptibles de voir le jour ultérieurement.

1.5 Améliorations

Si vous souhaitez améliorer ce document en y ajoutant de nouveaux chapitres, de nouvelles questions/réponses ou tout simplement me faire part de corrections, merci de m'envoyer vos suggestions par email (webmaster@phpindex.com).

1.6 Remarques

Quelques remarques concernant PHP et ce document :

- On ne le répétera jamais assez, PHP est un langage de script coté serveur. A ce titre, ne cherchez pas l'utiliser dans le cadre de traitements pour lesquels il n'est pas fait, en particulier coté client. Par exemple, récupérer la résolution écran d'un internaute venant visiter votre site. PHP n'est pas fait pour cela.

- Le langage PHP est souvent associé à MySQL (SGBDR) et à Apache (serveur HTTP). Ceci n'est pas une obligation ou une règle stricte. Mais uniquement le reflet d'une certaine popularité des ces différentes solutions.

- Ce document ne détaille pas avec précision les étapes d'installation de PHP. Ceci volontairement et pour au moins 2 raisons :

• l'expérience montre que vouloir détailler les étapes d'installation de PHP ne permet pas de prendre en compte l'ensemble des cas de figures tant la disparité des systèmes est importante.

• il existe désormais des solutions (packages et autres assistants) permettant d'installer PHP, MySQL et Apache relativement facilement. Et ceci, tant sous Unix que sous Windows.

1.7 Licence

Toute reproduction ou représentation, intégrale ou partielle, par quelque procédé que ce soit, des pages publiées dans le présent document, faite sans le consentement de l'auteur, est illicite et constitue une contrefaçon.

Seules sont autorisées les copies prévues à l'article L.122-5 du Code de la Propriété Intellectuelle, ainsi que :

1. La redistribution et la représentation à des fins pédagogiques dans un cadre scolaire ou universitaire ;

2. La redistribution, à titre gracieux uniquement, sur le lieu de travail du copiste d'une version imprimée de l'oeuvre, sous réserve que soient clairement mentionnés le nom de l'auteur et l'URL de la version officielle du document. Toute exploitation contre rétribution est explicitement interdite.


2. Généralités

Contenu de cette section

2.1 Qu'est-ce que PHP

PHP est un langage de script. Ses nombreux atouts (code directement intégré aux pages HTML, richesse des fonctions, facilité de connexion à l'ensemble de SGBD du marché, etc.) en font une solution idéale pour le développement de sites Web dynamiques.
Mais il peut également servir de langage de script classique, à l'image de Perl, afin d'assurer tous type de traitement système, administratif, etc.
Pour finir, il est même possible d'utiliser PHP afin d'écrire des applications GUI classiques à l'aide de solutions comme PHP-GTK (http://gtk.php.net/).

2.2 Que veux dire PHP

A l'origine, PHP signifiait "Personal Home Page". Désormais, il désigne "PHP Hypertext Preprocessor", le premier P désignant lui même PHP. Il s'agit donc d'un acronyme récursif :)

2.3 Quelles sont les différences entre PHP/FI, PHP3, PHP4

PHP/FI (Personal Home Page / Form Interpreter) fût la première version officielle de PHP (tout est parti d'une librairie Perl à l'origine).

PHP3 résulte d'une réécriture complète de PHP/FI.

PHP3 et PHP/FI ne sont plus officiellement supportés. Néanmoins, ils persistent encore en particulier chez certains hébergeurs.

Quant à PHP4, il résulte à son tour d'une réécriture de PHP3 et utilise le moteur Zend. C'est la branche courante de PHP.

Documentation :

What's New in PHP 4: Overview
http://www.zend.com/zend/whats-new.php

Under The Hood of PHP 4
http://www.zend.com/zend/art/under-php4-hood.php

2.4 Sur quelle architecture puis-je faire tourner PHP

Principalement Unix et NT.
Dans la mesure ou Mac OSX repose sur un noyau BSD, il est également possible de le déployer sur ce système.

2.5 Qu'est ce qui le distingue des ASP

En premier lieu, PHP et les ASP sont très proches dans la philosophie et la mise en oeuvre (code directement intégré aux pages HTML).

Comparé à PHP3, les ASP se montrent parfois plus rapides et implémentent un concept très utile, celui des sessions. Les sessions ne sont pas supportées en natif par PHP3, même si de multiples solutions existent (PHPLib : http://phplib.netuse.de/).

Comparé à PHP4, ces différences s'estompent. Ce dernier gagne en rapidité et introduit à son tour le concept de sessions.

Notons aussi que les ASP sont largement inféodés au monde Win32, même si des solutions Unix existent (ChiliSoft : http://www.chilisoft.com/)

PHP quant à lui est disponible sous NT comme sous Unix.

Enfin, précisons que PHP dispose d'un plus grand nombre de fonctions, s'interface aisément avec des librairies et outils externes. En particulier, il est en mesure de s'interfacer, le plus souvent en natif, avec l'ensemble des SGBD standards du marché. Les ASP ne proposent qu'une approche ODBC, bien moins performante.

2.6 Qu'est ce qui le distingue de Perl

L'approche est différente. De plus Perl existe depuis beaucoup plus longtemps que PHP. Il en résulte une importante base de connaissance (scripts, librairies et modules, documentations, etc.). Perl a su s'imposer comme standard.

Dans le cadre d'un développement de site Web dynamique, PHP est certainement plus adapté. Le développement se montre généralement plus rapide et plus facile à maintenir. Alors qu'un script Perl (très mal ou au contraire très bien écrit) peut s'avérer délicat à faire évoluer par quelqu'un d'autre que son auteur.

Comparé à PHP3, Perl est parfois plus rapide pour certaines opérations (manipulation de select volumineux dans une base, par exemple).

Précisons enfin que PHP sait s'inspirer des bonnes choses du monde Perl. A ce titre, le projet PEAR (PEAR: PHP Extension and Add-on Repository) peut-être vue comme l'équivalent du CPAN du monde Perl.

2.7 Quels sont ses avantages

Richesse des fonctions, facilité d'interconnexion avec les principaux SGBD du marché, syntaxe simple (proche du C), support des sessions, etc.

2.8 Quels sont ses inconvénients

Sans doute le fait qu'il ne s'agisse que d'un langage interprété offrant parfois des temps de réponse discutables.
Mais dans l'ensemble PHP s'en sort bien. Et les améliorations au fur et à mesure des versions sont notables.

A ce titre, PHP4 offre des temps de réponses bien meilleurs. De plus, il peut être couplé à des solutions diverses permettant d'améliorer encore plus les performances (optimiseur, cache, etc.)

Optimiser :

Zend Optimizer
http://www.zend.com/store/products/zend-optimizer.php

Cache :

Zend Cache
http://www.zend.com/store/products/zend-cache.php
AfterBURNER*Cache
http://bwcache.bware.it/cache.htm
APC Alternative PHP Cache
http://apc.communityconnect.com/
phpCache
http://0x00.org/php/phpCache/

2.9 Puis-je faire tourner mes scripts PHP3 avec PHP4

Oui. Quelques différences existent, mais elles sont infimes et ne devraient pas perturber vos scripts si vous choisissez de passer de PHP3 à PHP4.


3. Installation

Contenu de cette section

3.1 Où se procurer PHP

Sur le site officiel de PHP (http://www.php.net) ou auprès de l'un des nombreux miroirs comme celui de l'Université Michel de Montaigne BORDEAUX III (http://fr.php.net) ou de Nexen (http://fr2.php.net).

3.2 Comment installer PHP sous Windows

Consulter la documentation :
http://www.php.net/manual/fr/install-windows.php

3.3 Comment installer PHP sous Linux

Consulter la documentation :
http://www.php.net/manual/fr/install.linux.php

3.4 Comment installer PHP sous Mac OSX

Consulter la documentation :
http://www.php.net/manual/fr/install.macosx.php

3.5 Comment vérifier l'installation de PHP

Un bon réflexe consiste à faire à tester le script suivant :

<?php
phpinfo()
?>
Gardez ce script dans un coin, le résultat retourné par la fonction phpinfo() vous servira régulièrement.

3.6 Est-il possible de faire cohabiter PHP3 et PHP/FI

Oui ! Mais la chose n'a que peu d'intérêt...

3.7 Est-il possible de faire cohabiter PHP3 et PHP4

Oui ! Et cette approche semble plus justifiée que de chercher à faire cohabiter PHP3 et PHP/FI.
Afin de faire cohabiter PHP3 et PHP4, plusieurs méthodes existent.

Une première méthode consiste à compiler l'un des deux en qualité de module d'apache (par exemple PHP3) et l'autre en CGI.

Pensez à modifier le fichier de configuration d'Apache, en ajoutant les bons AddType. Exemple,

# PHP4 en CGI
AddType application/x-httpd-php .php
Action application/x-httpd-php /cgi-bin/php4.cgi
# PHP3 en Module
AddType application/x-httpd-php3 .php3

Une seconde méthode consiste à compiler l'un et l'autre en versioning. Plus d'info sur :

http://www.php.net/manual/cs/html/migration.html#migration.php4.with-php3

3.8 Où se trouve le fichier php.ini

A la base, ce fichier se prénomme php3.ini-dist avec PHP3 (respectivement php.ini-dist avec PHP4) et se trouve avec les sources de PHP.
A l'issue de la compilation, une fois édité et modifié, il faut le renommer en php3.ini avec PHP3 (respectivement php.ini avec PHP4), puis le placer sous /usr/local/lib afin qu'il soit pris en compte.
Le répertoire /usr/local/lib est le chemin par défaut.

3.9 Comment modifier le chemin par défaut du fichier php.ini

Par défaut, le php.ini se trouve sous le répertoire /usr/local/lib. Mais il est possible de préciser un chemin lors de la compilation (./configure) en précisant l'option --with-config-file-path=/path

Plus d'info sur :
http://archives.phpindex.com/articles/articles_lire.php3?element=7

3.10 Est-il possible d'installer PHP avec IIS

Oui.
Consulter la documentation :
http://www.php.net/manual/fr/install.iis.php

3.11 Est-il possible d'installer PHP avec PWS

Oui.
Consulter la documentation :
http://www.php.net/manual/fr/install.iis.php

3.12 Est-il possible d'installer PHP avec Xitami

Oui.
Consulter la documentation :
http://www.php.net/manual/fr/install.xitami.php

3.13 Est-il possible d'installer PHP avec Netscape Enterprise Server

Oui.
Consulter la documentation :
http://www.php.net/manual/fr/install.netscape-enterprise.php

3.14 Est-il possible d'installer PHP avec OmniHttpD

Oui.
Consulter la documentation :
http://www.php.net/manual/fr/install.omnihttpd.php

3.15 Comment enlever X-Powered-By: PHP/4.0.0 Content-type: text/html

Ce problème apparaît avec certaines version Win32 de PHP4. Supportant MySQL en natif, il faut commenter la ligne mysql_php.dll dans le fichier php.ini (mettre un ; devant mysql_php.dll).

3.16 Existe t-il des packages d'installation sous Windows

Oui. Et ils sont nombreux et de qualité variable.
On peut citer en particulier :

- EasyPHP : http://www.manucorp.com/
- QuickPHP : http://quickphp.online.fr/
- PHP EasyWindows Installer : http://php.weblogs.com/easywindows/
- PHPTriad : http://sourceforge.net/projects/phptriad/

3.17 Existe t-il des packages d'installation sous Linux

Oui. On peut citer en particulier LinuxEasyInstaller (http://www.phpmylinux.net/index.php3?rub=lei)

Notez aussi que la plupart des distributions Linux disposent de packages d'installation de PHP (Mandrake, Red Hat ou encore Debian).

3.18 Puis-je voir la liste complète des options de configuration de PHP

Oui, encore et toujours dans la documentation :
http://www.php.net/manual/fr/install.configure.php

3.19 Puis-je retrouver l'ensemble des options de compilation de la version de PHP que j'utilise

Oui. Un simple phpinfo() permet de retrouver les options de compilation de la version de PHP en cours.

3.20 Que désigne les terminologies suivantes : Module Statique, Module Dynamique, CGI

Elles correspondent à différents types d'installation de PHP avec Apache.
En module statique (--with-apache), PHP est compilé avec Apache. Le binaire Apache résultant d'une telle compilation "embarque" le module PHP.
En module dynamique (--with-apxs), PHP est compilé avec Apache, mais constitue un module indépendant.
Enfin, en CGI (--without-apache), PHP est compilé en marge d'Apache. On parle aussi de mode "stand alone".

3.21 Que choisir : Module Statique, Module Dynamique, CGI

Si vous optez pour une compilation de PHP en module statique (--with-apache), attendez-vous à obtenir un binaire Apache assez volumineux. PHP sera directement embarqué dans ce binaire. De plus, ce type de configuration sera plus complexe à maintenir et faire évoluer. En effet, si vous décidez de mettre à jour votre version de PHP, il faudra également recompiler Apache.

A l'inverse, avec une compilation de PHP en module dynamique (--with-apxs), vous gagnez en souplesse. Seul PHP devra être recompilé afin de basculer d'une version à une autre, ou afin d'embarquer de nouvelles librairies. Et ceci, indépendamment d'Apache.

Le mode CGI (--without-apache) est certainement le plus lourd. De plus, il impose certaines restriction (comme l'absence du support des mécanismes d'identification/authentification HTTP).


4. Apprentissage

Contenu de cette section

4.1 Où trouver de la documentation officielle

Sur le site officiel de PHP (http://www.php.net) ou auprès de l'un des nombreux miroirs comme celui de l'Université Michel de Montaigne BORDEAUX III (http://fr.php.net) ou de Nexen (http://fr2.php.net).

4.2 Où trouver des sites traitant de PHP

Oui. Et ils sont nombreux.
Des listes de sites sont maintenues sur :

- http://www.php.net/links.php
- http://archives.phpindex.com/annuaire/annuaire_index.php3
- http://dmoz.org/Computers/Programming/Languages/PHP/
- http://directory.google.com/Top/Computers/Programming/Languages/PHP/

Quelques sites majeurs :

- PHP (http://www.php.net)
- Zend (http://www.zend.com)
- PHPBuilder (http://www.phpbuilder.com)

Pour les anglophobes, on peut en particulier citer :

- PHPInfo (http://www.phpinfo.net)
- Zone Suivante (http://www.zonesuivante.com)
- PHPIndex (http://archives.phpindex.com)

Ces sites rassemblent une foultitude de ressources PHP et permettent de pointer rapidement vers des tutoriaux, exemples et scripts.

4.3 Où trouver des tutoriaux traitant de PHP

Il existe quelques tutoriaux sur le Web. Les plus complets abordent le langage dans son ensemble. C'est en particulier le cas pour :

- Le tutorial de Leo West (http://lwest.free.fr/doc/php/tutorial.php3)
- Le tutorial de Christophe Lauer (http://www.linux-france.org/article/devl/php3/tut/php3_tut1.html)
- Le site phpDebutant (http://d2expert.free.fr/phpdebutant/)

4.4 Où trouver des exemples de scripts en PHP

La documention officielle de PHP en contient.
Il est également intéressant d'aller sur des sites comme :

Quelques sites majeurs :

- PHP (http://www.php.net)
- Zend (http://www.zend.com)
- PHPBuilder (http://www.phpbuilder.com)

Pour les anglophobes, on peut en particulier citer :

- PHPInfo.net (http://www.phpinfo.net)
- Zone Suivante (http://www.zonesuivante.com)
- PHPDebutant (http://d2expert.free.fr/phpdebutant/)
- PHPIndex (http://archives.phpindex.com)

Ces sites rassemblent une foultitude de ressources PHP et permettent de pointer rapidement vers des tutoriaux, exemples et scripts.

4.5 Existe t-il des ouvrages traitant de PHP

Oui. Et ils sont nombreux.
Des listes d'ouvrages sont maintenues sur :

- http://www.php.net/books.php
- http://archives.phpindex.com/annuaire/annuaire_partiel.php3?sous_categorie=700&categorie=700

Pour les anglophobes, on peut en particulier citer :

- "Programmation Web avec PHP", Eyrolles (218.50 F).
- "Programmation en PHP4", Campus Press (229 F).
- "Pages Web dynamiques avec ASP, PHP, SQL", Campus Press (135 F).
- "Vos premiers pas avec PHP 4", OEM (58 F).
- "Pratique de MySQL et PHP", O'Reilly (190 F).
- "PHP 4 Développement d'application Web", Campus Press (169 F).
- "L'intro PHP 4", Campuss Press (149 F).
- "PHP Professionnel", Eyrolles (349 F).
- "Grand Livre PHP4 & MySQL", Micro Application (209 F).

4.6 Existe t-il des newsgroups traitant de PHP

Oui.

En anglais :
On peut citer le alt.php et le alt.php.sql. Sans oublier également le serveur de news news.php.net.

En français :
On peut citer le fr.comp.infosystemes.www.auteurs.php
Et dans une moindre mesure, le fr.comp.applications.sgbd (dédié aux SGBD) et le fr.comp.infosystemes.www.serveurs (dédié aux serveur HTTP type Apache).


5. PHP : Nombres

Contenu de cette section

5.1 Comment convertir un nombre dans un autre type

Bien souvent, le plus simple est de faire un cast, comme en langage C.
Exemple :

<?php
$mon_double= 2.345678; 
echo $mon_double; 
echo "n"; 
echo (int)$mon_double; 
echo "n"; 
?>
L'autre solution consiste à utiliser la fonction settype().
Exemple :

<?php
$mon_double = 2.345678; 
echo $mon_double; 
echo "n"; 
settype ($mon_double, integer); 
echo $mon_double; 
echo "n"; 
?>
Le champ d'utilisation de cette fonction va bien plus loin, puisque d'une façon générale, elle permet de convertir n'importe quelle variable dans un autre type (integer en string, string en double, etc.).

Documentation :
http://www.php.net/manual/fr/function.settype.php

5.2 Comment convertir de binaire à décimal

Par les fonctions bindec() et decbin().
Exemple :

<?php
$nombred=123; 
echo decbin($nombred); 
echo "n"; 

$nombreb="1011"; 
echo bindec($nombreb); 
echo "n"; 
?>
Documentation :
http://www.php.net/manual/function.bindec.php
http://www.php.net/manual/function.decbin.php

5.3 Comment convertir d'hexadécimal à décimal

Par les fonctions hexdec() et dechex().
Exemple :

<?php
$nombred=123; 
echo dechex($nombred); 
echo "n"; 

$nombreh="20"; 
echo hexdec($nombreh); 
echo "n"; 
?>
Documentation :
http://www.php.net/manual/fr/function.hexdec.php
http://www.php.net/manual/fr/function.dechex.php

5.4 Comment formater l'affichage de mes nombres

A l'aide de la fonction number_format().

Exemple :

<?php
$pi=3.14159265358979323846;
echo number_format($pi, 2);
?>
Documentation :
http://www.php.net/manual/fr/function.number-format.php

5.5 Comment savoir si un nombre est pair ou impair

Il y a de nombreuses solutions afin de tester la parité d'un nombre.

En utilisant l'opérateur modulo,

<?php
...
if ($nombre % 2 == 0) 
echo "$nombre est un nombre pair"; 
else 
echo "$nombre est un nombre impair"; 
...
?>
En controlant le bit de poids faible,
<?php
...
if($nombre & 1) 
echo "$nombre est un nombre impair"; 
else 
echo "$nombre est un nombre pair"; 
...
?>

6. PHP : Chaines

Contenu de cette section

6.1 Comment connaître la taille d'une chaine

En utilisant la fonction strlen().
Exemple :

<?php
$chaine="bonjour"; 
echo strlen($chaine); 
?>
Documentation :
http://www.php.net/manual/fr/function.strlen.php

6.2 Comment concaténer deux chaines

Avec PHP3 (et versions ultérieures), en utilisant l'opérateur . (point).

Exemple :

<?php
$chaine1="bon"; 
$chaine2="jour"; 
echo $chaine1.$chaine2; 
?>
Avec PHP/FI, utiliser l'opérateur + (plus).

6.3 Comment remplacer une occurrence dans une chaine

En utilisant la fonction str_replace().

Exemple :

<?php
$chaine="tout est rouge"; 
$chaine=str_replace("rouge", "bleu", $chaine); 
echo $chaine; 
?>
Documentation :
http://www.php.net/manual/fr/function.str-replace.php

6.4 Comment convertir une chaine en majuscule ou minuscule

En utilisant les fonctions srttolower() et strtoupper().

Exemple :

<?php
$chaine="MiXeD CaSe"; 
$echo strtolower($chaine); 
$echo strtoupper($chaine); 
?>
Documentation :
http://www.php.net/manual/fr/function.strtolower.php
http://www.php.net/manual/fr/function.strtoupper.php

6.5 Comment forcer le premier caractère d'une chaine en majuscule

A l'aide de la fonction ucfirst().

Documentation :
http://www.php.net/manual/fr/function.ucfirst.php

6.6 Comment forcer le premier caractère de chaque mot d'une chaîne en majuscule

A l'aide de la fonction ucwords().

Documentation :
http://www.php.net/manual/fr/function.ucwords.php

6.7 Comment supprimer les espaces présents en début de chaine

En utilisant la fonction ltrim().

Exemple :

<?php
$chaine=" Ceci est un test", 
$echo $chaine; 
$echo ltrim($chaine); 
?>
Documentation :
http://www.php.net/manual/fr/function.ltrim.php

6.8 Comment supprimer les espaces présents en début et fin de chaine

En utilisant la fonction trim().

Exemple :

<?php
$chaine="    Ceci est un test   ", 
$echo $chaine; 
$echo trim($chaine); 
?>
Documentation :
http://www.php.net/manual/fr/function.trim.php

6.9 Comment supprimer les espaces présents en fin de chaine

En utilisant la fonction rtrim().

Exemple :

<?php
$chaine="Ceci est un test   ", 
$echo $chaine; 
$echo rtrim($chaine); 
?>
Documentation :
http://www.php.net/manual/fr/function.rtrim.php

6.10 Comment remplacer rapidement les \n en <br>

En utilisant la fonction nl2br().

Exemple :

<?php
$chaine="Ceci est un test\n", 
$echo $chaine; 
$echo nl2br($chaine); 
?>
Documentation :
http://www.php.net/manual/fr/function.nl2br.php

6.11 Comment découper une chaine en fonction d'un séparateur

En utilisant la fonction explode().

Exemple :

<?php
$chaine = "Nom|Prenom|Adresse"; 
$champs = explode ("|", $chaine); 

$boucle=0; 
while ($boucle < sizeof($champs)) { 
    echo $champs[$boucle]; 
    echo "n"; 
    $boucle++; 
} 
?>
Documentation :
http://www.php.net/manual/fr/function.explode.php

6.12 Comment remplacer un $ dans une chaine

A l'aide de la fonction str_replace(),

<?php
$chaine="je remplace le signe $ par autre chose"; 
$chaine=str_replace("$", "USD", $chaine); 
print $chaine; 
?>
Et si vous tenez absolument à utiliser les regex, la syntaxe doit être,

<?php
$chaine="je remplace le signe $ par autre chose"; 
$chaine= ereg_replace ("$","USD",$chaine); 
print $chaine; 
?>
Documentation :
http://www.php.net/manual/fr/function.str-replace.php
http://www.php.net/manual/fr/function.ereg-replace.php

6.13 Comment supprimer les tags HTML et PHP présents dans un chaine

A l'aide de la fonction strip_tags().

Documentation :
http://www.php.net/manual/fr/function.strip-tags.php

6.14 Comment supprimer les tags HTML et PHP présents dans un chaine à l'exception de certains

A l'aide de la fonction strip_tags() et en précisant les tags à préserver.

Exemple :

<?php
$chaine="<body><html><hr><b><i>Ceci est un exemple</i></b></html></body>";
$chaine= strip_tags($chaine,"<hr>,<i>");
print $chaine;
?>
Documentation :
http://www.php.net/manual/fr/function.strip-tags.php

6.15 Comment obtenir le code ASCII d'un caractère

A l'aide de la fonction ord().

Documentation :
http://www.php.net/manual/fr/function.ord.php

6.16 Comment afficher un caractère à partir de son code ASCII

A l'aide de la fonction chr().

Documentation :
http://www.php.net/manual/fr/function.chr.php

6.17 Comment afficher le n-ième caractère d'une chaine

Une chaine n'est rien d'autre qu'un tableau à une dimension. Le premier caractère est indicé 0 et le dernier (n-1) ou n est la longueur de la chaine (que l'on peut obtenir par la fonction strlen()).

Exemple :

<?php
$chaine = "Ceci est un test.";
echo $chaine[0];
// retournera C
echo $chaine[strlen($chaine)-1];
// retournera .
?>

6.18 Comment afficher les n premiers caractères d'une chaine

A l'aide de la fonction substr().

Exemple :

<?php
$chaine = "Ceci est un test.";
echo substr($chaine,0,4);
// retournea "Ceci"
?>
Documentation :
http://www.php.net/manual/fr/function.substr.php

6.19 Comment afficher les n derniers caractères d'une chaine

A l'aide de la fonction substr().

Exemple :

<?php
$chaine = "Ceci est un test.";
echo substr($chaine,-4);
// retournea "est."
?>
Documentation :
http://www.php.net/manual/fr/function.substr.php

6.20 Comment inverser une chaine

A l'aide de la fonction strrev().

Documentation :
http://www.php.net/manual/fr/function.strrev.php

6.21 Comment remplacer les caractères accentués d'une chaine par leurs équivalents non accentués

En utilisant la fonction strtr().

Exemple :

<?php
$chaine="père noël et oeufs de pâques";
echo strtr($chaine, "èëâ", "eea");
?>
Documentation :
http://www.php.net/manual/fr/function.strtr.php

6.22 Puis-je faire l'inverse d'un htmlentities

L'exemple suivant vous y aidera peut-être :

<?php
$chaine="<body><html><br><b>bonjour</b></html></body>";
echo "Phase 1 (avant htmlentities) : ".$chaine."\n";
$chaine=htmlentities($chaine);
echo "Phase 2 (apres htmlentities) : ".$chaine."\n";
$tmp = array_flip (get_html_translation_table (HTML_SPECIALCHARS));
$chaine = strtr($chaine,$tmp);
echo "Phase 3 : ".$chaine."\n";
?>

6.23 Comment compter le nombre d'occurrences d'une sous chaine dans une chaine

Avec PHP4, à l'aide de la fonction substr_count().

Exemple :

<?php
$chaine="Je ne lis pas la doc";
print substr_count($chaine, "e");
// retournera 2
?>
Documentation :
http://www.php.net/manual/fr/function.substr-count.php

6.24 Comment supprimer les \ (anti-slash) dans une chaine

A l'aide de la fonction stripslashes().

Documentation :
http://www.php.net/manual/fr/function.stripslashes.php

6.25 Est-il possible d'ajouter un retour à la ligne automatique tout les n caractères

Oui. Par exemple, à l'aide de la fonction wordwrap().

Exemple :

<?php
$chaine="Parfois il m'arrive de lire la doc, mais pas assez pour découvrir ce genre de fonction qui peut s'avérer vraiment utile";
echo wordwrap($chaine,20);
?>
Cet exemple retournera,

Parfois il m'arrive
de lire la doc, mais
pas assez pour
découvrir ce genre
de fonction qui peut
s'avérer vraiment
utile

Documentation :
http://www.php.net/manual/fr/function.wordwrap.php

6.26 Comment puis-je afficher plusieurs fois la même chaine

Les solutions sont multiples. Il est par exemple possible de boucler sur un echo ou un print.
Une autre méthode consiste à utiliser str_repeat(), si vous disposez de PHP4.

Exemple :

<?php
echo str_repeat("+-",20);
// Retournera : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 
?>
Documentation :
http://www.php.net/manual/fr/function.str-repeat.php

6.27 La fonction strpos ne semble pas fonctionner

La fonction strpos() pose depuis longtemps un problème en PHP.

Cette fonction, pourtant très utile, recherche une occurrence dans une chaine et retourne la position de cette première occurence si elle est trouvée. Dans le cas contraire, elle retourne false.

Problème : le premier élément d'une chaine (donc d'un tableau, car une chaine est un tableau...) étant indicé 0, cette fonction semble également retourner false si l'occurrence cherchée se trouve en tout début de chaine !

Il est donc délicat de distinguer le cas d'une occurrence n'ayant pas été trouvée, du cas ou l'occurrence se trouve en début de chaine.

Une solution consiste à tester finement la valeur retournée par strpos().

Si on affiche cette valeur, on constate qu'une occurrence non trouvée retourne une chaine vide et qu'une occurrence trouvée en début de chaine retourne 0. L'idée consiste donc à ne plus tester false, mais si la valeur retounée est un entier ou non.

Exemple :

<?php
        $chaine = "Demain il fera beau"; 
        $occurrence = Array("il", "elle", "Demain"); 

        while (list($element, $valeur) = each($occurrence)) { 
                print $valeur." : "; 
                $pos = strpos($chaine,$valeur); 
                print $pos." -> "; 
                if (is_int($pos)==false) 
                        print "J'ai pas trouvé"; 
                else 
                        print "J'ai trouvé"; 
                print "\n"; 
        } 
?>
Cet exemple retournera :

il : 7 -> J'ai trouvé
elle : -> J'ai pas trouvé
Demain : 0 -> J'ai trouvé

Documentation :
http://fr.php.net/manual/fr/function.strpos.php

7. PHP : Tableaux

Contenu de cette section

7.1 Puis-je manipuler des tableaux associatifs comme en Perl

Oui.

7.2 Comment obtenir le nombre d'éléments d'un tableau

En utilisant la fonction sizeof().

Documentation :
http://www.php.net/manual/fr/function.sizeof.php

7.3 Comment obtenir le nombre d'éléments d'un tableau multidimensionnel

Toujours avec sizeof().

Ce qu'il faut comprendre c'est que dans un tableau multidimensionnel, chaque élément est lui-même un tableau. Il suffit donc d'appliquer la fonction sizeof() à la dimension qui vous intéresse. Exemple :

echo sizeof($montableau[3]);

Documentation :
http://www.php.net/manual/fr/function.sizeof.php

7.4 Comment trier un tableau

A l'aide des fonction sort(), rsort(), asort() et arsort().

Exemple :

<?php
$fruits=array("citron","orange","banane","pomme"); 
sort($fruits); 
for(reset($fruits); strcmp($key=key($fruits), ""); next($fruits)) { 
echo "fruits[$key]=".$fruits[$key]."\n"; 
} 
?>
Documentation :
http://www.php.net/manual/fr/function.sort.php
http://www.php.net/manual/fr/function.asort.php
http://www.php.net/manual/fr/function.rsort.php
http://www.php.net/manual/fr/function.arsort.php

7.5 Comment supprimer les doublons dans un tableau

Tout dépend si vous utilisez PHP3 ou PHP4.

Avec PHP3, le code suivant pourra peut-être vous y aider :

<?php
$a=array("1","7","4","poire","7","0","poire","citron"); 
while(list($k,$v)=each($a)) $b[$v]++; 
while(list($k,$v)=each($b)) echo $k."\n"; 
?>
Avec PHP4, vous pouvez utiliser la fonction array_unique().

Documentation :
http://www.php.net/manual/fr/function.array-unique.php

7.6 Comment fusionner deux tableaux

Tout dépend si vous utilisez PHP3 ou PHP4.

Avec PHP3, la fonction suivante pourra peut-être vous y aider :

<?php
function uniqueArray($array) { 

for ($i=0,$n=count($array);$i<$n;$i++) 
$u_array[$array[$i]] = 1; 

reset($u_array); 
for ($i=0,$n=count($u_array);$i<$n;$i++) { 
$unduplicated_array[] = key($u_array); 
next($u_array); 
} 

return $unduplicated_array; 
} 
?>
Avec PHP4, vous pouvez utiliser la fonction array_merge().

Documentation :
http://www.php.net/manual/fr/function.array-merge.php

7.7 Comment retourner un tableau depuis une fonction

En utilisant return, tout simplement.

Exemple :

<?php
function test()
{
        $fruit=array("pomme", "poire", "cerise", "fraise");
        return $fruit;
}

$tableau=test();

while(list($key,$val)=each($tableau))
{
        echo $val;
        echo "\n";
}
?>

7.8 Comment inverser un tableau

Tout dépend si vous utilisez PHP3 ou PHP4.

Avec PHP3, la fonction suivante pourra peut-être vous y aider :

<?php
...
function reverseArray($in_array)
{
    $size = count($in_array);
    end($in_array)
    for ($i=0; $i<$size; ++$i)
    {
        $key = key($in_array);
        $out_array[$key] = $in_array[$key];
        prev($in_array);
    }

    return $out_array;
}
...
?>
Avec PHP4, vous pouvez utiliser la fonction array_reverse().

Documentation :
http://www.php.net/manual/fr/function.array-reverse.php

7.9 Comment dupliquer un tableau

Le plus simplement du monde. Il suffit de faire ainsi,

<?php
...
$fruit1=array("pomme", "poire", "cerise", "fraise");
$fruit2=$fruit1;
...
?>

7.10 Comment transformer un tableau en chaine

En utilisant la fonction implode().

Documentation :
http://www.php.net/manual/fr/function.implode.php

7.11 Est-il possible de passer un tableau en argument d'une script à un autre

Ce n'est pas possible directement. Par contre, il est possible de passer une chaine.
Une méthode consiste donc à utiliser les fonctions implode() et explode().
La fonction implode() permet de grouper dans une chaine, l'ensemble des éléments stockés dans un tableau en les séparant par un séparateur défini.
La fonction explode() effectue l'opération inverse et permet de reconstruire un tableau dont les éléments sont stockés dans une chaine, séparés par un séparateur défini.
Exemple :

<?php
$a=array("un", "deux", "trois"); 

$temp=implode("|", $a); 
echo "temp=".$temp."n"; 

$b=explode("|", $temp); 
while(list($k,$v)=each($b)) echo "b[$k]=".$v."n"; 
?>
Une approche similaire consiste à utiliser les fonctions serialize() et unserialize().
Exemple :

<?php
$a=array("un", "deux", "trois"); 

$temp=serialize($a); 
echo "temp=".$temp."n"; 

$b=unserialize($temp); 
while(list($k,$v)=each($b)) echo "b[$k]=".$v."n"; 
?>
Pour finir, il est toujours possible de passer les éléments un par un par les méthodes POST ou GET.
Exemple :

/path/to/monscript.php3?tableau[]=arg1&tableau[]=arg2&etc.

Documentation :
http://www.php.net/manual/fr/function.implode.php
http://www.php.net/manual/fr/function.explode.php
http://www.php.net/manual/fr/function.serialize.php
http://www.php.net/manual/fr/function.unserialize.php

7.12 Comment obtenir la plus grande valeur contenue dans un tableau

A l'aide de la fonction max().

Exemple :

<?php
$tableau=array("102","23","12","167","17");
echo max($tableau);
// Retournera : 167
?>
Documentation ;
http://www.php.net/manual/fr/function.max.php

7.13 Comment obtenir la plus petite valeur contenue dans un tableau

A l'aide de la fonction min().

Exemple :

<?php
$tableau=array("102","23","12","167","17");
echo min($tableau);
// Retournera : 12
?>
Documentation ;
http://www.php.net/manual/fr/function.min.php

7.14 Comment afficher le dernier élément d'un tableau

A l'aide de la fonction end().

Exemple :

<?php
$tableau=array("pomme", "poire", "cerise", "framboise");
echo end($tableau);
// Retournera "franboise"
?>
Documentation :
http://www.php.net/manual/fr/function.end.php

7.15 Comment afficher le premier élément d'un tableau

A l'aide de la fonction reset().

Exemple :

<?php
$tableau=array("pomme", "poire", "cerise", "framboise");
echo reset($tableau);
// Retournera "pomme"
?>
Documentation :
http://www.php.net/manual/fr/function.reset.php

7.16 Comment obtenir la soustraction de 2 tableaux

Avec PHP4, en utilisant la fonction array_diff().

Exemple :

<?php
$array1 = array ("pomme", "poire", "cerise");
$array2 = array ("pomme", "fraise");
$result = array_diff ($array1, $array2);

while (list($key, $val)=each($result)) {
echo $val."\n";
}
?>

Retournera "poire" et "cerise", car "pomme" existe dans le second tableau.

Documentation :
http://www.php.net/manual/fr/function.array-diff.php

7.17 Comment obtenir l'intersection de 2 tableaux

Avec PHP4, en utilisant la fonction array_intersect().

Exemple :

<?php
$array1 = array ("pomme", "poire", "cerise");
$array2 = array ("fraise", "pomme");
$result = array_intersect ($array1, $array2);

while (list($key, $val)=each($result)) {
echo $val."\n";
}
?>
Retournera "pomme" car seul "pomme" existe dans les 2 tableaux.

Documentation :
http://www.php.net/manual/fr/function.array-intersect.php

8. PHP : Variables

Contenu de cette section

8.1 Comment savoir si une variable existe

En utilisant la fonction isset().

Documentation :
http://www.php.net/manual/fr/function.isset.php

8.2 Comment détruire une variable

En utilisant la fonction unset(). Notez qu'il n'est jamais inutile de détruire une variable qui ne servira plus (afin de libérer de la mémoire).

Documentation :
http://www.php.net/manual/fr/function.unset.php

8.3 PHP tient-il compte de la casse des caractères dans les noms de variables

Oui ! Ainsi, $chaine ou $Chaine permet d'adresser deux variables bien distinctes.
Notez enfin que PHP supporte les caractères accentués dans les noms de variable.

8.4 Qu'est-ce qu'une variable de variables

Un exemple sera plus simple pour expliquer ce concept si pratique :

<?php
$test = "hello"; 
$ma_variable = "test"; 

print $$ma_variable; 

// ou bien 
print ${$ma_variable}; 

// ou encore 
print ${"test"}; 

// affichera 'hello' 
?>

8.5 Qu'est-ce qu'une variable de fonction

Un exemple sera plus simple pour expliquer ce concept :

<?php
$chaine = "Bonjour tout le monde ! C'est super !"; 
$variable = "addslashes"; 

echo $variable($chaine); 
// Bonjour tout le monde ! C\'est super ! 
?>

8.6 Qu'est-ce qu'une variable locale

Lorsque vous déclarez une variable dans une fonction, cette variable n'est définie que dans celle ci. On dit que cette variable est locale. On parle aussi de portée ou de scope local.

Exemple :

<?php
function test() {
$chaine="bonjour";
}
$chaine="bonsoir";
test()
echo $chaine;
?>
La portée de $chaine, définie dans la fonction test() est locale à cette fonction. Elle est limitée à celle ci. Même après un appel à la fonction test(), notre variable $chaine définie dans le corps principal du script continue à retourner "bonsoir".

Les scopes de ces deux variables portant pourtant le même nom sont bien distincts.

8.7 Qu'est-ce qu'une variable globale

Lorsque vous déclarez une variable dans le corps d'un script, cette variable est définie pour l'ensemble du script. On dit que cette variable est globale. On parle aussi de portée ou de scope global.

Exemple :

<?php
$chaine="bonsoir";
include "lib.inc.php3";
echo $chaine;
?>
La portée de $chaine, définie ici est globale à l'ensemble du script. Elle est même visible et peut-être manipulée depuis un script embarqué par un include ou un require.

Par contre, cette variable ne sera pas visible directement depuis une fonction. Les fonctions gérant un scope local, limité à celles-ci.

8.8 Qu'est-ce qu'une variable static

Lorsque vous déclarez une variable dans une fonction, cette variable n'est définie que dans celle ci. On dit que cette variable est locale. On parle aussi de portée ou de scope local.
De plus, par défaut, cette variable à une durée de vie limité à cette fonction. Pour remédier à ceci, vous pouvez la rendre static. Dans ce cas, le scope sera préservé et la variable locale retrouvera sa valeur antérieure lors d'un nouvel appel à la fonction dont elle dépend.

Exemple :

<?php
function inutile() {
$compteur=0;
echo $compteur;
$compteur++;
}

function utile() {
static $compteur=0;
echo $compteur;
$compteur++;
}

inutile();
utile();
inutile();
utile();
inutile();
utile();
?>
Ce code retournera 000102. Que s'est-il passé ?

A chaque appel de notre fonction inutile(), la variable locale $compteur est initialisée à 0, puis affichée, puis incrémentée. Cette fonction est stupide. Elle affichera toujours 0.

A l'inverse, notre fonction utile() définie la variable locale $compteur comme static. Sa valeur est donc préservée dans le scope local. Elle est initialisée à 0 une première fois. Puis réellement incrémentée. Nous avons réalisé ici un compteur.

8.9 Comment modifier une variable globale depuis une fonction

Question légitime, puisque nous venons de voir que les fonctions utilisent des variables locales dont le scope ou la portée est limité à celles-ci.

En fait, il existe plusieurs méthodes.

Méthode 1 :
En déclarant global, la ou les variables dont vous voulez éteindre le scope ou la portée.

<?php
function addition($a, $b) {
global $resultat;
$resultat=$a+$b;
}
$a=2;
$b=12;
$resultat=0;
addition($a,$b);
echo $resultat;
?>
Méthode 2 :

En utilisant le tableau associatif $GLOBALS.

<?php
function addition($a, $b) {
$GLOBALS["resultat"]=$a+$b;
}
$a=2;
$b=12;
$resultat=0;
addition($a,$b);
echo $resultat;
?>
Méthode 3 :

En utilisant un passage d'argument par référence.

<?php
function addition($a, $b, &$resulat) {
$resultat=$a+$b;
}
$a=2;
$b=12;
$resultat=0;
addition($a,$b);
echo $resultat;
?>

8.10 Comment définir une super variable globale persistante d'un script à un autre

Une sorte de super variable globale ? :) Et oui, une variable même globale est perdue lorsque le script dans lequel elle est définie se termine.

En fait, les solutions sont multiples :
- passer la variable de script en script,
- utiliser les cookies,
- utiliser les sessions.

La solution utilisant les sessions est de loin la meilleure.

8.11 Dois-je déclarer mes variables en PHP

Non.

8.12 Quelles sont les valeurs par défaut de variables non initialisées

Question intéressante.
A vrai dire, cela dépend du type de variables. Les valeurs par défaut sont,

- type numérique : 0.00
- type chaine : "" équivalent à NULL
- type booléen : false équivalent à 0
- type tableau : NULL avec une taille à 0

8.13 Puis-je déclarer une variable dont le nom commence par un chiffre

Non !

8.14 Comment connaître le type d'une variable

A l'aide de la fonction gettype().

Exemple :

<?php
$chaine = "bonjour";
echo gettype($chaine);
// Retournera : string
?>
Documentation :
http://www.php.net/manual/fr/function.gettype.php

9. PHP : Classes

Contenu de cette section

9.1 Où trouver des informations sur PHP et la POO (Programmation Orienté Objets)

Quelques ressources en vrac :

An Introduction to Classes : http://zend.com/zend/tut/class-intro.php
Accessing Databases with Class : http://www.devshed.com/Server_Side/PHP/Class/
Classes and PHP : http://www.phpbuilder.com/columns/rod19990601.php3
Object Oriented Programming in PHP : http://php.vamsi.net/article/3/1

Sans oublier la documentation :
http://www.php.net/manual/fr/language.oop.php

9.2 Puis-je utiliser include et require dans la définition d'une classe

Non !

9.3 Comment passer une instance de classe d'un script à un autre

Il est possible de serializer l'instance et de la passer par les méthodes GET ou POST. Ou encore, de la stocker dans une session.

9.4 L'héritage est-il supporté

Oui, même dans PHP3 ou il n'était pourtant pas documenté.

9.5 Le polymorphisme est-il supporté

Oui.

9.6 Existe t-il une notion de destructeur d'instance de classe

Faites un simple unset().

Documentation :
http://www.php.net/manual/fr/function.unset.php

9.7 Comment depuis une classe dérivée, appeler une méthode de la classe parente

Tout simplement en faisant ceci :

$this->nom_de_la_methode_parente();

9.8 Comment accéder à une variable globale depuis une classe

De la même manière que l'on accède à une variable globale depuis une fonction. En utilisant l'opérateur global.

Exemple :

<?php
class Test {
         function inutile() {
             global $chaine;
             print $chaine;
         }
}

$chaine = "bonjour";

$test =new Test;
$test->inutile();
?>

10. PHP : Constantes

Contenu de cette section

10.1 La notion de constante existe t-elle avec PHP

Oui !

10.2 Comment déclarer une constante

A l'aide de la fonction define().

Exemple :

<?php
define ("PHP", "PHP Hypertext Preprocessor");
echo PHP;
?>
Documentation :
http://fr.php.net/manual/fr/function.define.php

10.3 Puis-je définir un tableau comme étant une constante

Non !
Une constante ne peut-être qu'une donnée scalaire.
A ce titre, une constante ne peut pas être un tableau ou un objet.

Documentation :
http://fr.php.net/manual/fr/function.define.php

10.4 PHP tient-il compte de la casse des caractères dans les noms de constantes

Par défaut, oui !
Mais il est possible de le paramètrer lors de la création de chaque constante. A ce titre, define() peut recevoir en ultime argument, la valeur 0 (défaut) ou 1. Si cet argument est initialisé à 1, PHP ne tiendra pas compte de la casse pour cette constante.

Exemple :

<?php
define ("ZOPE", "Z Object Publishing Environment",1);
define ("PHP", "PHP Hypertext Preprocessor");
echo ZOPE;
echo "\n";
echo zope;
echo "\n";
echo PHP;
echo "\n";
echo php;
?>
Ici, la constante ZOPE est définie de façon à ne plus prendre en compte la casse.
Ainsi, ZOPE et zope permettront de pointer vers la même constante.

Documentation :
http://fr.php.net/manual/fr/function.define.php

10.5 Je n'arrive pas à redéfinir une constante

Comportement logique et normal.
Une constante, comme son nom le laisse entendre, n'est pas prévue pour être modifiée. La première définition sera celle qui servira à initialiser la constante. Les suivantes seront sans effet.

Exemple :

<?php
define ("ZOPE", "Z Object Publishing Environment"); 
define ("ZOPE", "Z Object");
echo ZOPE; 
// retournera toujours "Z Object Publishing Environment"
?>
Documentation :
http://fr.php.net/manual/fr/function.define.php

10.6 Existe t-il des constantes prédéfinies

Oui ! Et certaines peuvent se montrer fort utiles.
On peut en particulier citer :

- __FILE__ : retourne nom du fichier qui est actuellement exécuté
- __LINE__ : retourne la ligne en court d'exécution
- TRUE : vrai booléen
- FALSE : faux booléen
- PHP_VERSION : version de PHP
- PHP_OS : nom du système d'exploitation

Sans oublier un certain nombre de constantes mathématiques. Exemple :

- M_PI : 3.14159265358979323846
- M_E : 2.7182818284590452354

Documentation :
http://www.php.net/manual/fr/language.constants.php
http://www.php.net/manual/fr/ref.math.php

10.7 Comment vérifier qu'une constante existe

A l'aide de la fonction defined().

Documentation :
http://www.php.net/manual/fr/function.defined.php


11. PHP : Fonctions

Contenu de cette section

11.1 Comment retourner un tableau depuis une fonction

En utilisant return, tout simplement.

Exemple :

<?php
function test() 
{ 
$fruit=array("pomme", "poire", "cerise", "fraise"); 
return $fruit; 
} 

$tableau=test(); 

while(list($key,$val)=each($tableau)) 
{ 
echo $val; 
echo "\n"; 
} 
?>

11.2 Comment passer un tableau à une fonction

Le plus simplement du monde.
Exemple :

<?php
function inutile($tableau) { 

while(list($key,$val)=each($tableau)) 
{ 
echo $val; 
echo "\n"; 
} 

} 

$fruit=array("pomme", "poire", "cerise", "fraise"); 
inutile($fruit);
?>

<