Rechercher
Boîte à outils
LANGUAGES

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&amp;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