PHP-də Requlyar İfadələrin İstifadəsinin Optimallaşdırılması

Requlyar ifadələr çox ağır və nisbətən yavas işleyən bir şeydir. Alternativ həll olduqda, arzu olunandır ki, ondan istifadə edilsin.

Bir nümunəyə baxaq. Tutaq ki, bir sətirin nida işareti ile başlayıb-başlamadığını yoxlamaq lazımdır. Bir proqramçı bu problemi requlyar ifadə vasitəsilə həll etmişdir:

php<?php
  if (preg_match('#^!#', $str)) {
    echo 'bəli';
  } else {
    echo 'xeyr';
  }
?>

Lakin, belə bir problemin daha sürətli işleyen həlli var:

php<?php
  if ($str[0] == '!') {
    echo 'bəli';
  } else {
    echo 'xeyr';
  }
?>

Requlyar ifadələr çox ağır və nisbətən yavas işleyən bir şeydir. Hər zaman, alternativ həll olduqda, arzu olunandır ki, ondan istifadə edilsin.

Задание 1

Aşağıdakı kodda bir proqramçı sətirdə '333' alt sətirinin olub-olmadığını yoxlayır. Bu proqramçının həllini optimallaşdırın.

Kod belədir:

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

Aşağıdakı kodda bir proqramçı sətirin .html ile bitib-bitmediyini yoxlayır. Bu proqramçının həllini optimallaşdırın.

Kod belədir:

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

Sətirin .png ve ya .jpg ile bitib-bitmediyini yoxlayan kod yazın.