Оптимизация на използването на регулярни изрази в PHP

Регулярните изрази са много тежка и относително бавно работеща работа. Когато има алтернативно решение, желателно е да се използва именно то.

Нека разгледаме пример. Да предположим, че трябва да проверим дали даден низ започва с удивителен знак. Някой програмист е решил тази задача чрез регулярен израз:

php<?php
  if (preg_match('#^!#', $str)) {
    echo 'да';
  } else {
    echo 'нет';
  }
?>

Въпреки това, такава задача има много по- бързо работещо решение:

php<?php
  if ($str[0] == '!') {
    echo 'да';
  } else {
    echo 'нет';
  }
?>

Регулярните изрази са много тежка и относително бавно работеща работа. Винаги, когато има алтернативно решение, желателно е да се използва именно то.

Задание 1

В следния код някой програмист проверява, дали в низа има подниз '333'. Оптимизирайте решението на този програмист.

Ето кода:

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

В следния код някой програмист проверява, дали низът завършва на .html. Оптимизирайте решението на този програмист.

Ето кода:

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

Напишете код, който ще проверява дали низ завършва на .png или на .jpg.