Escapning av avgränsare i PHP
Om ett tecken inte är speciellt, så, när du använder det som en avgränsare, måste det escaped inuti det reguljära uttrycket självt. Låt oss titta på ett exempel.
Låt oss säga att fyrkanttecken fungerar som avgränsare, och inuti det reguljära uttrycket letar vi efter tecknet ampersand. Eftersom ampersand inte är ett specialtecken, så behöver vi inte escapea det:
<?php
echo preg_replace('#a&b#', '!', 'a&b'); // skriver ut '!'
?>
Låt oss nu säga att avgränsarna är ampersands och inuti det reguljära uttrycket behöver vi också en ampersand. I det fallet måste ampersanden inuti escapas, annars kommer det att orsaka ett PHP-fel:
<?php
echo preg_replace('&a\&b&', '!', 'a&b'); // skriver ut '!'
?>
Råtta felet som gjorts i följande kod:
<?php
echo preg_replace('#a#b#', '!', 'a#b');
?>