Tutoriel PHP

PHP

Découvez les bases de PHP dans mon support de formation dédié à ce puissant langage orienté web.


HTML HTML5 CSS Dreamweaver Bootstrap

Fonctions de texte en PHP

Dans cette partie, nous allons utiliser ces quelques fonctions de texte.

  • implode(), Rassemble les éléments d'un tableau en une chaîne
  • explode(), Coupe une chaîne en segments.
  • str_replace(), Remplace toutes les occurrences dans une chaîne
  • strlen(), Calcule la taille d'une chaîne.
  • strpos(), Trouve la position d'un caractére dans une chaîne.
  • substr(), Retourne la partie extraite de la chaîne dans le segment de string défini par start et length ou FALSE si une erreur survient
  • strrchr(), Trouve la dernière occurrence d'un caractère dans une chaîne
  • strlen(), Affiche le nombre de caractères contenu dans une chaîne
  • strtolower(), permet de passer une chaîne de caractères en minuscule, strtoupper(), permet de passer une chaîne de caractères en majuscule, ucfirst(), permet de passer la premère lettre d'une chaîne de caractères en majuscule
  • strcmp(), permet de comparer des chînes de caractères

implode()

Rassemble les éléments d'un tableau en une chaîne.

string implode ( string $glue , array $pieces )

glue

Par défaut, une chaîne vide.

pieces

Le tableau de chaînes à rassembler.

Valeurs de retour

Retourne une chaîne contenant la représentation en chaîne de caractères de tous les éléments du tableau pieces, dans le même ordre, avec la chaîne glue, placée entre deux éléments.

Exemple 1

<?php
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

// Chaîne vide lors de l'emploi d'un tableau vide :
var_dump(implode('hello', array())); // string(0) ""
?>

Exemple 2

<?php
// Permet de récupérer les différentes valeurs du $_POST['id_appreciations_fk'] contenu dans des checkboxs, que nous séparrons par une virgule
$id_appreciations_fk=implode(',',$_POST['id_appreciations_fk']);
?>

Exercice implode, insérer plusieurs valeurs dans une table

explode()

Coupe une chaîne en segments.

array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX] )

delimiter

Le séparateur.

string

La chaîne initiale.

limit

Si limit est défini et positif,le tableau retourné contient, au maximum, limit éléments, et le dernier élément contiendra le reste de la chaîne.

Si le paramètre limit est négatif, tous les éléments, excepté les -limit derniers éléments sont retournés.

Si limit vaut zéro, il est traité comme valant 1.

<?php
// Exemple 1
$Texte = "Bonjour tout le momde ";
$pieces = explode(" ", $Texte);
echo $pieces[0] ." "; // Bonjour
echo $pieces[1]; // tout
?>
Bonjour tout

Exemple 2

<?php
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?>
foo*

Exemple 3 avec une boucle foreach

<?php
$id_q3_fk=explode(',',$row_Enquete['id_q3_fk']);

foreach ($id_q3_fk as $valeur){
   $q3 = mysqli_query($bdd, "SELECT * FROM question3 WHERE id_q3=".$valeur."") or die(mysqli_error($bdd));
   $row_q3 = mysql_fetch_assoc($q3);

   echo $row_q3['question3']."<br>";
}
?>

Exercice avec explode Exercice avec explode et base de données

str_replace()

Remplace toutes les occurrences dans une chaîne

str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
search

La valeur à chercher, autrement connue comme le masque. Un tableau peut être utilisé pour désigner plusieurs masques.

replace

La valeur de remplacement à substituer aux valeurs trouvées. Un tableau peut être utilisé pour désigner plusieurs valeurs de remplacement.

subject

La chaîne de caractéres ou le tableau sur lequel on va effectuer la recherche et le remplacement, aussi connu sous le nom de haystack.

Si subject est un tableau, alors le remplacement se fera sur chaque élément de celui-ci, et la valeur retournée sera aussi un tableau.

count

Si fournie, cette variable contiendra le nombre de remplacements effectués.

<?php
$texte="Voici un texte <br> Encore un texte<br> Encore un texte";
echo $texte;
?>

Voici un texte
Encore un texte
Encore un texte

Maintenant on remplace le <br> par un espace avec str_replace :

<?php
$texte="Voici un texte <br> Encore un texte<br> Encore un texte";
// str_replace recherche la chaîne de caractére "<br>" et la remplace par " " rien
echo str_replace("<br>"," ",$texte);
?>
Voici un texte Encore un texte Encore un texte

strpos()

Trouve la position d'un caractére dans une chaîne.

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

Retourne la position numérique de la premiére occurrence de needle dans la chaîne de caractéres haystack.

Liste de paramétres

haystack

La chaîne dans laquelle on doit chercher.

needle

Si needle n'est pas une chaîne, il est converti en entier, et utilisé comme caractére de code ASCII correspondant.

offset

Le paramétre optionnel offset vous permet de spécifier à partir de quel caractére dans haystack vous souhaitez commencer la recherche. La position retournée sera toujours relative au début de la chaîne haystack.

Valeurs de retour

Retourne la position, sous la forme d'un entier. Si needle n'est pas trouvé, strpos() retournera FALSE.

<?php
$Chaine="Bonjour à tous";
$Affiche=strpos($Chaine,"j");
echo $Affiche;
?>
3

substr()

Retourne la partie extraite de la chaîne dans le segment de string défini par start et length ou FALSE si une erreur survient

substr ( string $string , int $start [, int $length ] )

string
La chaîne d'entrée.

start
Si start est positif, la chaîne retournée commencera au caractére numéro start, dans la chaîne string. Le premier caractére est numéroté zéro. Actuellement, dans la chaîne 'abcdef', le caractére à la position 0 est 'a', le caractére à la position 2 est 'c', et ainsi de suite.

Si start est négatif, la chaîne retournée commencera au caractére numéro start à compter de la fin de la chaîne string.

Si string est plus petit ou égal à start caractéres de long, FALSE sera retourné.

length
Si length est fourni et est positif, la chaîne retournée contiendra au plus length caractéres, en commençant à partir du caractére start (en fonction de la taille de la chaîne string).

Si length est fourni et négatif, alors le même nombre de caractéres sera omis, en partant de la fin de la chaîne string. Si start représente une position hors de la chaîne, une chaîne vide sera retournée.

Si le paramétre length est fourni et vaut 0, FALSE ou NULL, une chaîne vide sera retournée.

Si length est omis, la sous chaine commençant à partir de start jusqu'à la fin sera retournée.

Exemple avec start négatif

<?php
$rest = substr("abcdef", -1);    // retourne "f"
$rest = substr("abcdef", -2);    // retourne "ef"
$rest = substr("abcdef", -3, 1); // retourne "d"
?>

Exemple avec length négatif

<?php
$rest = substr("abcdef", 0, -1);  // retourne "abcde"
$rest = substr("abcdef", 2, -1);  // retourne "cde"
$rest = substr("abcdef", 4, -4);  // retourne ""
$rest = substr("abcdef", -3, -1); // retourne "de"
?>

<?php
echo substr('abcdef', 1);     // bcdef
echo substr('abcdef', 1, 3);  // bcd
echo substr('abcdef', 0, 4);  // abcd
echo substr('abcdef', 0, 8);  // abcdef
echo substr('abcdef', -1, 1); // f

// Accéder à un simple caractére dans une chaîne
// peut également être réalisé en utilisant des crochets
$string = 'abcdef';
echo $string[0];                 // a
echo $string[3];                 // d
echo $string[strlen($string)-1]; // f
?>

strrchr()

Trouve la dernière occurrence d'un caractère dans une chaîne.

string strrchr ( string $haystack , mixed $needle )

Retourne le segment de la chaîne haystack qui commence avec la dernière occurrence de needle, jusqu'à la fin de la chaîne haystack.

Liste de paramètres :

haystack

La chaîne dans laquelle on doit chercher.

needle

Si needle contient plus d'un caractère, seul le premier sera utilisé. Ce comportement est différent de celui de strchr().
Si needle n'est pas une chaîne, il est converti en entier, et utilisée comme caractère de code ASCII correspondant.

Valeur de retour :

Retourne la portion de la chaîne, ou FALSE si needle n'est pas trouvé

<?php
$path = '/www/site1/index.php';
$filename = substr(strrchr($path, "/"), 1);
echo $filename; // "index.php"
?>
index.php

strlen()

Calcule la taille d'une chaîne.

int strlen( string $string)

<?php
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';
echo strlen($str); // 7
?>

strtolower()

Permet de passer une chaîne de caractères en minuscule.

<?php
$prenom="CHRISTOPHE";
// Permet d'afficher le prénom en minuscule
strtolower($prenom);
?>

strtoupper()

Permet de passer une chaîne de caractères en majuscule.

<?php
$prenom="christophe";
// Permet d'afficher le prénom en majuscule
strtoupper($prenom);
?>

ucfirst()

Permet de passer la premère lettre d'une chaîne de caractères en majuscule.

<?php
$prenom="christophe";
// Permet d'afficher le prénom avec une majuscule en début
ucfirst($prenom);
?>

strcmp()

Permet de comparer des chaînes de caractères

int strcmp ( string $str1 , string $str2 )

Notez que cette comparaison est sensible à la casse.

Valeurs de retour :
Retourne < 0 si str1 est inférieure à str2; > 0 si str1 est supérieure à str2, et 0 si les deux chaînes sont égales.

<?php
$var1 = "Bonjour";
$var2 = "bonjour";
if (strcmp($var1, $var2) !== 0) {
echo "$var1 n'est pas égal à $var2 par comparaison sensible à la casse.";
}
?>
Bonjour n'est pas égal à bonjour par comparaison sensible à la casse.

Récupérer une chaine de caractère comprise entre deux autres

<?php
$chaine="Ciel couvert à très nuageux, pluie fble à mod. 0046/0230, 1150/1210 et 1325/1430, orage 1310/1550.";

$recup_caracteres = substr($chaine, strpos($chaine, "mod.")+4, strpos($chaine, ", orage")-strlen($chaine));

echo $recup_caracteres;
?>

0046/0230, 1150/1210 et 1325/1430