Problema backslash-ului în PHP
Backslash-ul este un caracter special în PHP. Aceasta înseamnă că, într-un șir de caractere, dacă dorim ca backslash-ul să reprezinte el însuși, trebuie să-l dublăm:
<?php
$str = '\\ \\\\ \\\\\\'; // de fapt șirul este '\ \\ \\\'
?>
Backslash-ul este, de asemenea, și un caracter special al expresiilor regulate. Aceasta înseamnă că, în interiorul unei expresii regulate, pentru ca backslash-ul să reprezinte el însuși, trebuie să-l scriem de până la patru ori:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // va afișa '! ! !!'
?>
Să scriem acum o expresie regulată în care
modelul de căutare este: backslash
unul sau mai multe ori. În acest caz vom
scrie operatorul + pentru 4
caractere înaintea lui fără grupare:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // va afișa '! ! !'
?>
Este dat șirul:
<?php
$str = 'a\\b c\\d e\\f';
?>
Găsiți în acest șir toate subșirurile după modelul literă, backslash, literă.
Este dat șirul:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Găsiți în acest șir toate subșirurile după modelul literă, backslash orice număr de ori, literă.