რეგულარული გამონათქვამების ოპტიმიზაცია 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-ზე.