SUBSTR |
Sous-chaîne de caractères |
|---|---|
Perl |
Syntaxe
| substr expr, offset |
| substr expr, offset, len |
|
substr expr, offset, len, replacement |
Paramètres
| Nom | Description |
|---|---|
| expr | Ce paramètre permet d'indiquer la chaîne de caractères |
| offset | Ce paramètre permet d'indiquer la position dans la chaîne de caractères |
| len | Ce paramètre permet d'indiquer la longueur du morceau de la chaîne de caractères |
| replacement | Ce paramètre permet d'indiquer la chaîne de caractères a utiliser comme remplacement |
Description
Cette fonction retourne une sous-chaîne de caractères contenus dans une chaîne de caractères.
Remarques
- Fonction polyvalente pour extraire ou modifier une chaîne : La fonction substr est particulièrement utile pour travailler avec des chaînes de caractères, car elle peut à la fois extraire une portion d'une chaîne et, de manière plus avancée, modifier cette portion en la remplaçant par une autre. Cette double fonctionnalité la distingue des simples fonctions de découpage.
- L'offset commence à zéro et peut être négatif : Le paramètre offset désigne l'index de départ dans la chaîne, à partir de 0. Il peut aussi être négatif, ce qui signifie que le comptage part de la fin de la chaîne (par exemple, -1 désigne le dernier caractère). Cela donne beaucoup de souplesse dans les manipulations, notamment quand on ne connaît pas la longueur exacte de la chaîne.
- Le paramètre len est facultatif mais précis : Lorsque le paramètre len est spécifié, substr extrait exactement cette quantité de caractères. Si ce paramètre est omis, toute la chaîne depuis l'offset jusqu'à la fin sera retournée. Cela permet de s'adapter selon qu'on veuille un extrait précis ou simplement le reste de la chaîne à partir d'un point donné.
- Le quatrième paramètre permet de modifier directement la chaîne d'origine : Lorsqu'un quatrième paramètre (replacement) est fourni, substr ne se contente plus de lire une portion de chaîne : elle la remplace dans la variable d'origine. Ce comportement "in place" permet de modifier rapidement une sous-section d'une chaîne sans devoir tout réassembler manuellement.
- Fonctionne aussi comme une lvalue pour les affectations : substr peut également être utilisée en tant que lvalue (valeur gauche d'une affectation), ce qui signifie qu'on peut directement lui assigner une nouvelle valeur comme dans : substr($str, 2, 4) = "abcd";. Cela simplifie les remplacements localisés, un peu comme on le ferait sur un tableau.
- Pratique pour traiter des formats de texte fixes : Dans les traitements de fichiers à colonnes fixes (comme certains fichiers COBOL ou systèmes), substr est idéale pour extraire des champs à des positions et longueurs bien définies. Elle permet d'implémenter facilement des analyses de lignes où chaque champ a une taille précise.
- Peut retourner une chaîne vide dans plusieurs cas : Si l'offset dépasse la fin de la chaîne ou si len est 0, substr retourne simplement une chaîne vide. Ce comportement est sécuritaire mais nécessite de vérifier les bornes pour éviter des résultats vides inattendus, surtout dans des boucles ou des extractions répétées.
- Attention aux encodages multioctets : Lorsque l'on travaille avec des chaînes encodées en UTF-8 ou d'autres encodages multioctets, substr agit sur les positions de caractères (et non les octets), mais seulement si le fichier est marqué avec use utf8;. Sinon, il peut y avoir des coupures incomplètes de caractères. Il faut donc s'assurer de bien gérer l'encodage lors de traitements de textes multilingues.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
on obtiendra le résultat suivant :
Bonjour le monde !jour le monde !
jour le
Voir également
Langage de programmation - PHP - Référence de procédures et fonctions - substr
Références
La Bible Micro Application HTML & Développement Web, Stefan Munz, Wolfgang Nefzger, 2003, ISBN: 2-7429-2898-7, page 1108
Perl/CGI-Programmation avancée Grand Livre, Edition Micro Application, Rolf D. Stoll, 2001, ISBN: 2742919082, page 93
Dernière mise à jour : Dimanche, le 18 octobre 2015