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 билан тугашини текширадиган код ёзинг.