Le problème de la barre oblique inversée en PHP
La barre oblique inversée est un caractère spécial en PHP. Cela signifie que dans une chaîne, si nous voulons qu'elle se représente elle-même, nous devons la doubler :
<?php
$str = '\\ \\\\ \\\\\\'; // en réalité, la chaîne est '\ \\ \\\'
?>
La barre oblique inversée est également un caractère spécial des expressions régulières. Cela signifie qu'à l'intérieur d'une regex, pour qu'elle se représente elle-même, il faut l'écrire pas moins de quatre fois :
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // affichera '! ! !!'
?>
Écrivons maintenant une expression régulière dans laquelle
le motif de recherche sera : barre oblique inversée
une ou plusieurs fois. Dans ce cas, nous
écrirons l'opérateur + pour pas moins de 4
caractères devant lui sans regroupement :
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // affichera '! ! !'
?>
Soit la chaîne :
<?php
$str = 'a\\b c\\d e\\f';
?>
Trouvez dans cette chaîne toutes les sous-chaînes correspondant au motif lettre, barre oblique inversée, lettre.
Soit la chaîne :
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Trouvez dans cette chaîne toutes les sous-chaînes correspondant au motif lettre, barre oblique inversée un nombre quelconque de fois, lettre.