Optimalizácia použitia regulárnych výrazov v PHP

Regulárne výrazy sú veľmi ťažká a pomerne pomalá vec. Ak existuje alternatívne riešenie, je žiaduce použiť práve to.

Pozrime sa na príklad. Predpokladajme, že potrebujeme skontrolovať, či reťazec začína výkričníkom. Nejaký programátor vyriešil túto úlohu pomocou regulárneho výrazu:

php<?php
  if (preg_match('#^!#', $str)) {
    echo 'áno';
  } else {
    echo 'nie';
  }
?>

Avšak, táto úloha má oveľa rýchlejšie riešenie:

php<?php
  if ($str[0] == '!') {
    echo 'áno';
  } else {
    echo 'nie';
  }
?>

Regulárne výrazy sú veľmi ťažká a pomerne pomalá vec. Vždy, keď existuje alternatívne riešenie, je žiaduce použiť práve to.

Задание 1

V nasledujúcom kóde nejaký programátor kontroluje, či sa v reťazci nachádza podreťazec '333'. Optimalizujte riešenie tohto programátora.

Tu je kód:

php<?php
  $str = '1233345';
  
  if (preg_match('#333#', $str)) {
    echo 'áno';
  } else {
    echo 'nie';
  }
?>
Задание 2

V nasledujúcom kóde nejaký programátor kontroluje, či reťazec končí na .html. Optimalizujte riešenie tohto programátora.

Tu je kód:

php<?php
  $str = 'index.html';
  
  if (preg_match('#\.html$#', $str)) {
    echo 'áno';
  } else {
    echo 'nie';
  }
?>
Задание 3

Napíšte kód, ktorý bude kontrolovať, či reťazec končí na .png alebo na .jpg.