Il problema della barra rovesciata in PHP
La barra rovesciata è un carattere speciale in PHP. Ciò significa che in una stringa, se vogliamo che la barra rovesciata rappresenti se stessa, dobbiamo raddoppiarla:
<?php
$str = '\\ \\\\ \\\\\\'; // in realtà la stringa è '\ \\ \\\'
?>
La barra rovesciata è anche un carattere speciale delle espressioni regolari. Ciò significa che all'interno di un'espressione regolare, affinché la barra rovesciata rappresenti se stessa, deve essere scritta ben quattro volte:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // output: '! ! !!'
?>
Ora scriviamo un'espressione regolare in cui
il modello di ricerca è: barra rovesciata
una o più volte. In questo caso
scriveremo l'operatore + per ben 4
caratteri prima di esso senza raggruppamento:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // output: '! ! !'
?>
Data la stringa:
<?php
$str = 'a\\b c\\d e\\f';
?>
Trova in questa stringa tutte le sottostringhe secondo il modello lettera, barra rovesciata, lettera.
Data la stringa:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Trova in questa stringa tutte le sottostringhe secondo il modello lettera, barra rovesciata qualsiasi quantità di volte, lettera.