Оптимизация использования регулярок в 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.