Problemet med bakoverstrek i PHP
Bakoverstrek er et spesialtegn i PHP. Dette betyr at i en streng, hvis vi ønsker at streken skal representere seg selv, må vi doble den:
<?php
$str = '\\ \\\\ \\\\\\'; // faktisk er strengen '\ \\ \\\'
?>
Bakoverstrek er også et spesialtegn i regulære uttrykk. Dette betyr at inni det regulære uttrykket, for at streken skal representere seg selv, må den skrives hele fire ganger:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // vil skrive ut '! ! !!'
?>
La oss nå skrive et regulært uttrykk der
søkemønsteret er: bakoverstrek
en eller flere ganger. I så fall
skriver vi operatoren + for hele 4
tegn foran den uten gruppering:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // vil skrive ut '! ! !'
?>
Gitt følgende streng:
<?php
$str = 'a\\b c\\d e\\f';
?>
Finn alle delstrenger i denne strengen som følger mønsteret bokstav, bakoverstrek, bokstav.
Gitt følgende streng:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Finn alle delstrenger i denne strengen som følger mønsteret bokstav, bakoverstrek et hvilket som helst antall ganger, bokstav.