El problema de la barra invertida en PHP
La barra invertida es un carácter especial en PHP. Esto significa que en una cadena, si queremos que la barra invertida se represente a sí misma, debemos duplicarla:
<?php
$str = '\\ \\\\ \\\\\\'; // en realidad la cadena es '\ \\ \\\'
?>
La barra invertida también es un carácter especial en las expresiones regulares. Esto significa que dentro de una expresión regular, para que la barra invertida se represente a sí misma, necesita escribirse hasta cuatro veces:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // mostrará '! ! !!'
?>
Ahora escribamos una expresión regular en la que
el patrón de búsqueda sea: barra invertida
una o más veces. En este caso, escribiremos
el operador + para 4
caracteres antes que él sin agrupación:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // mostrará '! ! !'
?>
Se da la cadena:
<?php
$str = 'a\\b c\\d e\\f';
?>
Encuentre en esta cadena todas las subcadenas según el patrón letra, barra invertida, letra.
Se da la cadena:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Encuentre en esta cadena todas las subcadenas según el patrón letra, barra invertida cualquier cantidad de veces, letra.