(PHP 4, PHP 5, PHP 7, PHP 8)
substr — Retourne un segment de chaîne
$string, int $offset, ?int $length = null): string
   Retourne le segment de string défini par
   offset et length.
  
stringLa chaîne de caractères d'entrée.
offset
       Si offset est positif, la chaîne
       retournée commencera au caractère numéro offset,
       dans la chaîne string. Le premier caractère
       est numéroté zéro. En effet, 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 offset est négatif, la chaîne retournée
       commencera au caractère numéro offset à compter
       de la fin de la chaîne string.
      
       Si string est plus petit que
       offset caractères de long, une chaîne vide sera retourné.
      
Exemple #1 Exemple de offset négatif
<?php
$rest = substr("abcdef", -1);    // retourne "f"
$rest = substr("abcdef", -2);    // retourne "ef"
$rest = substr("abcdef", -3, 1); // retourne "d"
?>
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
       offset (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 offset représente
       une position hors de la chaîne, false sera retournée.
      
       Si le paramètre length est fourni
       et vaut 0, une chaîne vide sera retournée.
      
       Si length est omis ou null, la sous chaine commençant
       à partir de offset jusqu'à la fin sera retournée.
      
Exemple #2 Utilisation d'une valeur négative pour length
<?php
$rest = substr("abcdef", 0, -1);  // retourne "abcde"
$rest = substr("abcdef", 2, -1);  // retourne "cde"
$rest = substr("abcdef", 4, -4);  // retourne ""; antérieur à PHP 8.0.0, false était retourné
$rest = substr("abcdef", -3, -1); // retourne "de"
?>
   Retourne la partie extraite de la chaîne string,
   ou une chaine vide.
  
| Version | Description | 
|---|---|
| 8.0.0 | 
       length est désormais nullable.
       Lorsque length est explicitement défini à null,
       la fonction retourne une sous-chaîne terminant à la fin de la chaîne,
       alors qu'elle renvoyait auparavant une chaîne vide.
       | 
     
| 8.0.0 | 
       Cette fonction retourne une chaîne vide où auparavant elle retournait false
       | 
     
Exemple #3 Exemple avec substr()
<?php
echo substr('abcdef', 1);     // bcdef
echo substr("abcdef", 1, null); // bcdef; antérieur à PHP 8.0.0, une chaîne vide était retournée
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
?>
Exemple #4 Comportement du cast avec substr()
<?php
class apple {
    public function __toString() {
        return "green";
    }
}
echo "1) ".var_export(substr("pear", 0, 2), true).PHP_EOL;
echo "2) ".var_export(substr(54321, 0, 2), true).PHP_EOL;
echo "3) ".var_export(substr(new apple(), 0, 2), true).PHP_EOL;
echo "4) ".var_export(substr(true, 0, 1), true).PHP_EOL;
echo "5) ".var_export(substr(false, 0, 1), true).PHP_EOL;
echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;
echo "7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;
?>
L'exemple ci-dessus va afficher :
1) 'pe' 2) '54' 3) 'gr' 4) '1' 5) '' 6) '' 7) '1200'
Exemple #5 Intervalle de Caractères Invalide
    Si une intervalle de caractères invalide est demandé,
    substr() retourne une chaîne vide à partir de PHP 8.0.0;
    auparavant false était retourné à la place.
   
<?php
var_dump(substr('a', 2));
?>
Résultat de l'exemple ci-dessus en PHP 8 :
string(0) ""
Résultat de l'exemple ci-dessus en PHP 7 :
bool(false)