Optimalizace používání regulárních výrazů v PHP
Regulární výrazy jsou velmi náročná a poměrně pomalu pracující věc. Když existuje alternativní řešení, je vhodné používat právě to.
Podívejme se na příklad. Předpokládejme, že potřebujeme zkontrolovat, zda nějaký řetězec začíná vykřičníkem. Jistý programátor tento úkol vyřešil pomocí regulárního výrazu:
<?php
if (preg_match('#^!#', $str)) {
echo 'ano';
} else {
echo 'ne';
}
?>
Nicméně, tento úklad má mnohem rychlejší řešení:
<?php
if ($str[0] == '!') {
echo 'ano';
} else {
echo 'ne';
}
?>
Regulární výrazy jsou velmi náročná a poměrně pomalu pracující věc. Vždy, když existuje alternativní řešení, je vhodné používat právě to.
V následujícím kódu jistý programátor kontroluje,
zda se v řetězci nachází podřetězec '333'.
Optimalizujte řešení tohoto programátora.
Zde je kód:
<?php
$str = '1233345';
if (preg_match('#333#', $str)) {
echo 'ano';
} else {
echo 'ne';
}
?>
V následujícím kódu jistý programátor kontroluje,
zda řetězec končí na .html.
Optimalizujte řešení tohoto programátora.
Zde je kód:
<?php
$str = 'index.html';
if (preg_match('#\.html$#', $str)) {
echo 'ano';
} else {
echo 'ne';
}
?>
Napište kód, který bude kontrolovat, zda řetězec
končí na .png nebo na .jpg.