PHP
De Wiki_Libre.
Cette page regroupe, de manière synthétique et non exhaustive, les principales connaissances nécessaires pour le PHP.
Sommaire |
Généralités
Variables
Définition
Variable :
- nom
- valeur
Une donnée :
- texte
- nombre
- booléen (true ou false)
Calculs simples
- addition : +
- soustraction : -
- division : /
- multiplication : *
Transmissions de variables
- Récupérer des variables depuis une url
Code source :
<?php echo $_GET['VARIABLE']; ?>
Adresse HTTP
http://www.DOMAINE.fr/nom.php?VARIABLE=VALEUR1&VARIABLE2=VALEUR2
- Récupérer des variables depuis un formulaire
Code source :
<?php echo $_POST['VARIABLE']; ?>
Formulaire HTML :
<form action="page.php" method="post"> <p> <input type="text" name="VARIABLE" /> <input type="submit" value="Valider" /> </p>
Les Fonctions
Créer une fonction
<?php function nomFonction($VARIABLE) { echo "$VARIABLE !"; // Instructions } nomFonction("VALEUR"); ?>
Les Conditions
Symboles
- == : égal à
- != : différent de
- > : supérieur à
- < : inférieur à
- >= : supérieur ou égal à
- <= : inférieur ou égal à
if...Else : Si
<?php if (condition1 AND condition2) { // instructions } elseif (condition3 OR condition4) { // instructions } else { // instructions } ?>
switch : Selon Cas
<?php switch ($VARIABLE) { case VALEUR1: //instructions break; default: //instructions } ?>
Les Boucles
while : Tant Que
<?php while (CONDITION) { // instructions } ?>
Do...while : Répéter
<?php do { // instructions } while (CONDITION); ?>
for : Pour
<?php for ($VARIABLE = 1; $VARIABLE <= 5; $VARIABLE++) { // instructions } ?>
foreach : pour chaque
<?php foreach($contact as $cle => $valeur) { echo $cle ,' : ', $valeur ,'<br/>'; } ?>
Les tableaux
array par numérotation
<?php $villes = array ("Paris", "Londres", "Amsterdam", "New York"); ?>
array par association
<?php $contact = array ( "nom" => "Henri", "prenom" => "Paul", "ville" => "Paris", "e-mail" => "h.paul@domain.com"); ?>
print_r
- Affichage de l'array
- <pre> permet de conserver le formatage du tableau
<?php echo '<pre>'; print_r($contact); echo '</pre>'; ?>
array_key_exists
- Tester si une clé existe
<?php array_key_exists("nom", $contact) ?>
in_array
- Tester si une valeur existe
<?php in_array("Jean", $contact) ?>
array_search
- Récupérer la clé d'une valeur
<?php array_search("Jean", $contact) ?>
explode
- Transformer une chaîne en array
<?php $array_chaine = explode('SEPARATEUR', $date); ?>
MySQL
connect / select_db / close
<?php mysql_connect("localhost", "login", "password"); // Connexion mysql_select_db("DB_name"); // Sélection de la base de données // instructions mysql_close(); // Déconnexion ?>
mysql_query
- Créer une requête
<?php $requete = mysql_query("select * from TABLE"); ?>
mysql_fetch_array
- Afficher le résultat d'une requête
<?php while ($data = mysql_fetch_array($requete) ) { echo $data['nom']; echo "<br />"; } ?>
or die(mysql_error()
- Découvrir les erreurs
<?php $requete = mysql_query("select * from TABLE") or die(mysql_error()); ?>
Simplifier le code
concaténation
- implémenter une page php dans une autre page
<?php $adresse_complete = $no_rue . $adresse . $CP . $ville echo . $nom . ' habite ' . adresse_complete . ?>
include
- implémenter une page php dans une autre page
<?php include("menu.php"); ?>
apostrophes
- remplacer les guillemets par des apostrophes
<?php $nom = 'Henri'; ?>
- afficher les apostrophes
<?php echo 'A l\'origine'; ?>
Fonctions sur les chaînes
addslashes
- Ajouter des slash avant les guillemets et apostrophes
<?php $new_variable = addslashes($variable); ?>
stripslashes
- Enlever les slash avant les guillemets et apostrophes
<?php $new_variable = stripslashes($variable); ?>
htmlspecialchars
- Convertir les caractères spéciaux HTML en simple caractère
<?php $code_sans_html = htmlspecialchars($code_html); ?>
nl2br
- Convertir les "retour chariot" en des <br />
<?php $paragraphe = nl2br($paragraphe); ?>
strlen
- Afficher le nombre de caractères que compose une chaîne de caractères
<?php $nb_caracteres = strlen($chaine); ?>
str_replace
- Remplacer une lettre, un mot, un groupe de mot par un autre
<?php $phrase = str_replace(\'malade\', \'en pleine forme\', \'je suis malade\'); ?>
str_shuffle
- Mélanger les caractères d'une chaîne de caractères
<?php $chaine = str_shuffle($chaine); ?>
strtolower
- Mettre tous les caractères en minuscule
<?php $chaine = strtolower($chaine); ?>
variable variable
- Afficher en fonction de la valeur d'une variable, le contenu de plusieurs variables
<?php $afficher = \'nom\'; $nom = \'Dupond\'; $prenom = \'Paul\'; echo ${'variable choisie : ' . $afficher}; ?>
Les Dates
<?php date("PARAMETRE" [, TIMESTAMP]); ?>
Jour
date("d"); // jour du mois avec zéro initial (2 chiffres) date("D"); // jour de la semaine (3 lettres) date("j"); // jour du mois sans zéro initial date("l"); // jour de la semaine textuel (format long & anglais) date("N"); // chiffre du jour de la semaine (1 : lundi à 7 : dimanche) date("S"); // suffixe ordinal d'un nombre pour le jour du mois (st, nd, rd, th) date("w"); // chiffre du jour de la semaine (0 : dimanche à 6 : samedi) date("z"); // jour de l'année
Semaine
date("W"); // numéro de semaine (début de la semaine : lundi)
Mois
date("F"); // mois textuel (format long & anglais) date("m"); // nombre du mois avec zéro initial date("M"); // mois textuel (format court & anglais) date("n"); // mois sans zéro initial date("t"); // nombre de jours dans le mois
Année
date("L"); // année bisextile (booléen) date("o"); // année ISO-8601 (commençant le lundi) date("Y"); // année sur 4 chiffres date("y"); // année sur 2 chiffres
Heure
date("a"); // am ou pm date("A"); // AM ou PM date("B"); // heure Internet Swatch (000 à 999) date("g"); // heure, format 12h, sans zéro initial date("G"); // heure, format 24h, sans zéro initial date("h"); // heure, format 12h, avec zéro initial date("H"); // heure, format 24h, avec zéro initial date("i"); // minutes avec zéro initial date("s"); // secondes avec zéro initial date("u"); // microsecondes
Fuseau horaire
date("e"); // identifiant (UTC, GMT...) date("I"); // heure d'été (booléen) date("O"); // différence d'heures avec GMT, en heures date("P"); // différence d'heures avec GMT, en heures (ajout du deux-points) date("T"); // abréviation (EST, MDT...) date("Z"); // décalage horaire en secondes (-43200 à 50400)
Date et heure complète
date("c"); // date au format ISO 8601 (2004-02-12T15:19:21+00:00) date("r"); // date au format RFC 2822 (Thu, 21 Dec 2000 16:01:07 +0200) date("u"); // secondes depuis l'époque Unix (1er Janvier 1970, 0h00 00s GMT)
Fonctions superglobales
$_SERVER
<?php $_SERVER['PHP_SELF'] // chemin de la page exécutée $_SERVER['HTTP_REFERER'] // Url de la page dont provient le visiteur $_SERVER['REMOTE_ADDR'] // adresse IP du client exécutant la page ?>
$_ENV
Variable d'environnement de l'OS du serveur
$_GET
Donne les valeurs des informations données dans l'URL
$_POST
Donne les valeurs des informations données dans un formulaire
$_FILES
Envoi de fichiers sur le serveur à partir d'un formulaire
$_SESSION
Variables de session
<?php session_start() // Démarrage de la session (génération d'un ID (PHPSESSID) transmis de page en page) $_SESSION['login'] // login du visiteur $_SESSION['password'] // password du visiteur session_destroy() // déconnexion de la session ?>
$_COOKIE
Valeur des cookies enregistrés sur le PC du visiteur
Ecrire un cookie
<?php $timestamp_expiration = time() + 30*24*3600; // expiration du cookie (1 mois) setcookie('pseudo', 'Batou', $timestamp_expiration); // nom du cookie / valeur du cookie / expiration ?>
Afficher un cookie
<?php $_COOKIE['pseudo'] // afficher un cookie ?>
Fichiers
3 modes :
- r : lecture seule
- r+ : lecture / écriture
- a : lecture seule (création du fichier s'il n'existe pas)
- a+ : lecture / écriture (création du fichier s'il n'existe pas)
fopen
- Ouverture du fichier en lecture seule
<?php fopen("fichier.txt", "r"); ?>
fgets
- Lecture du fichier
<?php fgets($fichier); ?>
fseek
- Pointeur du fichier en position 0
<?php fseek($fichier, 0); ?>
fputs
- Ecriture du fichier
<?php fputs($fichier, $texte); ?>
fclose
- Fermeture du fichier
<?php fclose($fichier); ?>
Images
Imagepng
- Image PNG
<?php header ("Content-type: image/png"); // format de l'image $image = imagecreate(500,400); // créer une image vide $image2 = imagecreatefrompng("photo.png"); // créer une image à partir d'une existente imagepng($image); // afficher l'image ?>
Imagejpeg
- Image JPEG
<?php header ("Content-type: image/jpeg"); // format de l'image $image = imagecreatefromjpeg("photo.jpeg"); // créer une image à partir d'une existente imagejpeg($image); // afficher l'image ?>
imagecolorallocate
- Créer une couleur
<?php $rouge = imagecolorallocate($image, 255, 0, 0); // variable "couleur rouge" ?>
imagestring
- Ecrire du texte
<?php imagestring($image, $police, $x, $y, $texte, $couleur); // Ecrire du texte sur l'image $police = 3; // taille de police (1 à 5) $x = 200; // coordonnée en abscisses $y = 300; // coordonnée en ordonnée ?>
imagecolortransparent
- Une couleur d'une image devient transparente
<?php imagecolortransparent($image, $couleur); ?>
imagecopymerge
- Fusion de 2 images
<?php imagecopymerge($image2, $image1, $image2_x, $image2_y, $image1_x, image1_y, $largeur_source, $hauteur_source, $transparence); // $image2 : image de destination // $image1 : image source // $image2_x : abscisse de l'image cible // $image2_y : ordonnée de l'image cible // $image2_x : abscisse de l'image source // $image2_y : ordonnée de l'image source // $largeur_source : largeur de l'image source // $hauteur_source : hauteur de l'image source // $transparence : pourcentage de transparence de l'image source ?>
imagecopyresampled
- Redimensionner une image
imagecopyresampled($image2, $image1, $image2_x, $image2_y, $image1_x, image1_y, $largeur_image1, $hauteur_image1, $largeur_image1, $hauteur_image1, $largeur_image2, $hauteur_image2); // $image2 : image de destination // $image1 : image source // $image2_x : abscisse de l'image destination // $image2_y : ordonnée de l'image destination // $image1_x : abscisse de l'image source // $image1_y : ordonnée de l'image source // $largeur_image1 : largeur de l'image source // $hauteur_image1 : hauteur de l'image source // $largeur_image2 : largeur de l'image destination // $hauteur_image2 : hauteur de l'image destination <?php ?>
Formes géométriques
- Un pixel
<?php ImageSetPixel ($image, $x, $y, $couleur); ?>
- Une ligne
<?php ImageLine ($image, $x1, $y1, $x2, $y2, $couleur); ?>
- Une ellipse vide
<?php ImageEllipse ($image, $x, $y, $largeur, $hauteur, $couleur); ?>
- Une ellipse pleine
<?php ImageFilledEllipse ($image, $x, $y, $largeur, $hauteur, $couleur); ?>
- Un rectangle vide
<?php ImageRectangle ($image, $x1, $y1, $x2, $y2, $couleur); // $x1/$y1 : coin en haut à gauche ; $x2/$y2 : coin en bas à droite ?>
- Un rectangle plein
<?php ImageFilledRectangle ($image, $x1, $y1, $x2, $y2, $couleur); ?>
- Un polygone vide
<?php ImagePolygon ($image, $array_points, $nb_points, $couleur); //array_points : coordonnées des points ; nb_points : nb de côtés ?>
- Un polygone plein
<?php ImageFilledPolygon ($image, $array_points, $nombre_de_points, $couleur); ?>
Les expressions régulières
2 types :
- POSIX : regex de PHP
- PCRE : regex de Perl (+ performant)
preg_grep
- Tester une chaîne (renvoie un booléen)
<?php preg_match("regex", "chaine")) ?>
preg_replace
- Faire des remplacements
<?php $string = 'Le renard marron agile saute par dessus le chien paresseux.'; $patterns[0] = '/agile/'; $patterns[1] = '/marron/'; $patterns[2] = '/renard/'; $replacements[2] = 'grizzly'; $replacements[1] = 'brun'; $replacements[0] = 'lent'; echo preg_replace($patterns, $replacements, $string); ?>
Options
- i : indifférent à la casse
- s : le "." fonctionne aussi pour les retours à la ligne "\n"
- U : mode "Ungreedy" (s'arrête dès la 1ère occurrence)
Classe de caractères
- [a-z] : caractère minuscule a à z
- [0-9] : chiffre de 0 à 9
- [a-zA-Z0-9] : caractère de a à z ou chiffre de 0 à 9
- #[^a-z]# : aucune lettre
- #[^[^a-z]]# : ne commence pas par une lettre
Chaîne
- #mot# : rechercher "mot" dans la chaîne
- #mot1|mot2# : rechercher un mot ou un autre
- #^mot# : doit commencer par "mot"
- #mot$# : doit se terminer par "mot"
- #^mot$# : doit contenir seulement "mot"
Quantificateurs
3 caractères :
- ? : facultatif (0,1)
- + : obligatoire (1,)
- * : facultatif (0,)
Répétition :
- () : répétition
- {} : nombre de répétitions
Exemples :
- #a?# : apparaît 0 ou 1 fois
- #a+# : apparaît au moins une fois
- #a*# : apparaît 0, 1 ou plusieurs fois
- #bri?e# : "brie" ou "bride"
- #a(lo|la)*# : "a" ou "alo" ou "ala", ou "alolalolalalo"
- #a{2}# : "aa"
- #a{2,4}# : "aa" ou "aaaa"
- #a{2}# : aa" ou "aaa" ou "aaaaaaaa" ...
Métacaractères
- # : délimiteur
- ! : délimiteur
- ^ : début de chaine
- $ : fin de chaine
- ( : répétition de plusieurs caractères
- ) : idem
- [ : intervalles de classe
- ] : idem
- { : nombre de répétition
- } : idem
- | : OU
- ? : quantificateur : {0,1}
- + : quantificateur : {1,}
- * : quantificateur : {0,}
- . : n'importe quel caractère
- \ : enlève le caractère spécial
Pour utiliser ces caractères dans une chaîne, il faut le faire précéder d'un anti-slash : \
Note : le tiret ("-") est à placer en début ou fin de classe
Classes abrégées
3 caractères :
- \d : [0-9]
- \D : [^0-9]
- \w : [a-zA-Z0-9_]
- \W : [^a-zA-Z0-9_]
- \t : tabulation
- \n : nouvelle ligne
- \r : retour chariot
- \s : espace blanc
- \S : Vs espace blanc
- . : universel
