Optymalizacja wykorzystania wyrażeń regularnych w PHP

Wyrażenia regularne są bardzo ciężkie i stosunkowo wolno działające. Gdy istnieje alternatywne rozwiązanie, warto korzystać właśnie z niego.

Spójrzmy na przykład. Załóżmy, że musimy sprawdzić, czy pewien ciąg znaków zaczyna się od wykrzyknika. Pewien programista rozwiązał to zadanie za pomocą wyrażenia regularnego:

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

Jednakże, to zadanie ma znacznie szybciej działające rozwiązanie:

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

Wyrażenia regularne są bardzo ciężkie i stosunkowo wolno działające. Zawsze, gdy istnieje alternatywne rozwiązanie, warto korzystać właśnie z niego.

Задание 1

W następnym kodzie pewien programista sprawdza, czy w ciągu znaków znajduje się podciąg '333'. Zoptymalizuj rozwiązanie tego programisty.

Oto kod:

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

W następnym kodzie pewien programista sprawdza, czy ciąg znaków kończy się na .html. Zoptymalizuj rozwiązanie tego programisty.

Oto kod:

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

Napisz kod, który sprawdzi, czy ciąg znaków kończy się na .png lub na .jpg.