Regulāro izteiksmju optimizācija PHP

Regulārās izteiksmes ir ļoti smags un salīdzinoši lēni strādājošs rīks. Kad ir alternatīvs risinājums, vēlams izmantot tieši to.

Apskatīsim piemēru. Pieņemsim, ka mums ir jāpārbauda, vai kāda virkne sākas ar izsaukuma zīmi. Kāds programmētājs šo problēmu atrisināja ar regulāro izteiksmi:

php<?php
  if (preg_match('#^!#', $str)) {
    echo 'jā';
  } else {
    echo 'nē';
  }
?>

Tomēr, šai problēmai ir daudz ātrāks risinājums:

php<?php
  if ($str[0] == '!') {
    echo 'jā';
  } else {
    echo 'nē';
  }
?>

Regulārās izteiksmes ir ļoti smags un salīdzinoši lēni strādājošs rīks. Vienmēr, kur ir alternatīvs risinājums, vēlams izmantot tieši to.

Задание 1

Nākamajā kodā kāds programmētājs pārbauda, vai virknē ir apakšvirkne '333'. Optimizējiet šī programmētāja risinājumu.

Lūk, kods:

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

Nākamajā kodā kāds programmētājs pārbauda, vai virkne beidzas ar .html. Optimizējiet šī programmētāja risinājumu.

Lūk, kods:

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

Uzrakstiet kodu, kas pārbaudīs, vai virkne beidzas ar .png vai ar .jpg.