前回の恐ろしい正規表現をphpで試してみようとしたところ、予想した結果にならなかった。 phpの正規表現に関して、ある設定項目があって、デフォルトでは無茶な処理をさせないようになっていた(php5.2から)。php4でも、何かしらの制限に引っかかるようだ。 では、phpで無茶な正規表現を試す。 (.*)*^ 最後に^(行頭)と書いてあるので、結果としてはどんな文字列にもマッチしないでマッチするのは行頭のみなのだが、マッチするまでにあらゆる組み合わせにトライするので、恐ろしく負荷が高い。 10文字から初めて、1文字ずつ増やしながら30文字まで、所要時間の計測と付随する情報の表示をする。 $t = time(); $s = '123456789012345678901234567890'; for ($i = 10; $i <= 30; ++$i) { $m = microtime(1) -
![【php】正規表現ってそんなに負荷が高いの?(その3) at softelメモ](https://cdn-ak-scissors.b.st-hatena.com/image/square/1547f4b97eb50bd09e99d5f897a6c447ee41f867/height=288;version=1;width=512/https%3A%2F%2Fwww.softel.co.jp%2Fblogs%2Ftech%2Ffb.png)