PHPにおける正規表現の使用最適化
正規表現は非常に重く、 比較的動作が遅いものです。 代替となる解決策がある場合には、 そちらを使用することが望ましいです。
例を見てみましょう。 ある文字列が感嘆符で始まっているかどうかを 確認する必要があるとします。 あるプログラマーはこの問題を正規表現で 解決することにしました:
<?php
if (preg_match('#^!#', $str)) {
echo 'はい';
} else {
echo 'いいえ';
}
?>
しかし、このような問題にははるかに 高速に動作する解決策があります:
<?php
if ($str[0] == '!') {
echo 'はい';
} else {
echo 'いいえ';
}
?>
正規表現は非常に重く、比較的動作が遅いものです。 代替となる解決策が常にある場合には、 そちらを使用することが望ましいです。
次のコードで、あるプログラマーは文字列に
部分文字列 '333' が含まれているかどうかを
確認しています。
このプログラマーの解決策を最適化してください。
コードは以下の通りです:
<?php
$str = '1233345';
if (preg_match('#333#', $str)) {
echo '含む';
} else {
echo '含まない';
}
?>
次のコードで、あるプログラマーは文字列が
.html で終わっているかどうかを
確認しています。
このプログラマーの解決策を最適化してください。
コードは以下の通りです:
<?php
$str = 'index.html';
if (preg_match('#\.html$#', $str)) {
echo 'はい';
} else {
echo 'いいえ';
}
?>
文字列が .png または .jpg で
終わっているかどうかを確認するコードを
記述してください。