Problem odwrotnego ukośnika w PHP
Odwrotny ukośnik jest znakiem specjalnym PHP. Oznacza to, że w ciągu znaków, jeśli chcemy, aby ukośnik oznaczał sam siebie, musimy go podwoić:
<?php
$str = '\\ \\\\ \\\\\\'; // w rzeczywistości ciąg '\ \\ \\\'
?>
Odwrotny ukośnik jest również znakiem specjalnym wyrażeń regularnych. Oznacza to, że wewnątrz wyrażenia regularnego, aby ukośnik oznaczał sam siebie, trzeba go wpisać aż cztery razy:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // wypisze '! ! !!'
?>
Spróbujmy teraz napisać wyrażenie regularne, w którym
wzorzec wyszukiwania będzie brzmiał: odwrotny ukośnik
jeden lub więcej razy. W takim przypadku
użyjemy operatora + dla 4
znaków przed nim bez grupowania:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // wypisze '! ! !'
?>
Dany jest ciąg:
<?php
$str = 'a\\b c\\d e\\f';
?>
Znajdź w tym ciągu wszystkie podciągi według wzorca litera, odwrotny ukośnik, litera.
Dany jest ciąg:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Znajdź w tym ciągu wszystkie podciągi według wzorca litera, odwrotny ukośnik dowolną liczbę razy, litera.