Problém zpětného lomítka v PHP
Zpětné lomítko je speciální znak v PHP. To znamená, že v řetězci, pokud chceme, aby lomítko představovalo samo sebe, musíme jej zdvojit:
<?php
$str = '\\ \\\\ \\\\\\'; // ve skutečnosti řetězec '\ \\ \\\'
?>
Zpětné lomítko je také speciálním znakem regulárních výrazů. To znamená, že uvnitř regulárního výrazu, aby lomítko představovalo samo sebe, je potřeba jej napsat dokonce čtyřikrát:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // vypíše '! ! !!'
?>
Nyní napišme regulární výraz, ve kterém
vyhledávací vzor bude: zpětné lomítko
jedenkrát nebo vícekrát. V takovém případě
napíšeme operátor + pro 4
znaků před ním bez seskupení:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // vypíše '! ! !'
?>
Je dán řetězec:
<?php
$str = 'a\\b c\\d e\\f';
?>
Najděte v tomto řetězci všechny podřetězce podle vzoru písmeno, zpětné lomítko, písmeno.
Je dán řetězec:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Najděte v tomto řetězci všechny podřetězce podle vzoru písmeno, zpětné lomítko libovolný počet krát, písmeno.