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<?php
  if (preg_match('#^!#', $str)) {
    echo 'ano';
  } else {
    echo 'ne';
  }
?>

Nicméně, tento úklad má mnohem rychlejší řešení:

php<?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.

Задание 1

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<?php
  $str = '1233345';
  
  if (preg_match('#333#', $str)) {
    echo 'ano';
  } else {
    echo 'ne';
  }
?>
Задание 2

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<?php
  $str = 'index.html';
  
  if (preg_match('#\.html$#', $str)) {
    echo 'ano';
  } else {
    echo 'ne';
  }
?>
Задание 3

Napište kód, který bude kontrolovat, zda řetězec končí na .png nebo na .jpg.