Optimizarea utilizării expresiilor regulate în PHP

Expresiile regulate sunt un instrument foarte greu și relativ lent. Când există o soluție alternativă, este de preferat să o folosiți pe aceasta.

Să ne uităm la un exemplu. Să presupunem că trebuie să verificăm dacă un anumit șir începe cu un semn de exclamare. Un programator a rezolvat această sarcină folosind o expresie regulată:

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

Cu toate acestea, această sarcină are o soluție mult mai rapidă:

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

Expresiile regulate sunt un instrument foarte greu și relativ lent. Întotdeauna, când există o soluție alternativă, este de preferat să o folosiți pe aceasta.

Задание 1

În următorul cod, un programator verifică dacă în șir există subșirul '333'. Optimizați soluția acestui programator.

Iată codul:

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

În următorul cod, un programator verifică dacă șirul se termină cu .html. Optimizați soluția acestui programator.

Iată codul:

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

Scrieți cod care va verifica dacă șirul se termină cu .png sau cu .jpg.