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 で 終わっているかどうかを確認するコードを 記述してください。