location ~ \.php$

Alexey Mahotkin squadette at gmail.com
Thu Oct 18 20:24:10 MSD 2007


On 10/18/07, Gena Makhomed <makhomed at pbank.lutsk.ua> wrote:
> если это действительно так, тогда может быть имеет смысл внутри nginx
> регулярные выражения вида ~ \.php$ обрабатывать не через библиотеку pcre
> а специально оптимизированной для такого случая функцией "сопоставления"?

Насколько я понимаю, нормальная библиотека регексов должна и так
оптимизировать разные частые варианты, типа "строка в конце".
Перловый регексер так и делает:

=== test-re-opt.pl ===
#! /usr/bin/perl -w


use strict;
use re 'debug';

my $sample = "index.php";

if ($sample =~ /\.php$/) {
  print "matched\n";
} else {
  print "not matched\n";
}
=== /test-re-opt.pl ===

выдача:

[alexm at mynd tmp]$ perl test-re-opt.pl
Compiling REx `\.php$'
size 4 Got 36 bytes for offset annotations.
first at 1
   1: EXACT <.php>(3)
   3: EOL(4)
   4: END(0)
anchored ".php"$ at 0 (checking anchored isall) minlen 4
Offsets: [4]
        1[5] 0[0] 6[1] 7[0]
Guessing start of match, REx "\.php$" against "index.php"...
Found anchored substr ".php"$ at offset 5...
Starting position does not contradict /^/m...
Guessed: match at offset 5
matched
Freeing REx: `"\\.php$"'


как-то так....

-- 
Алексей Махоткин
http://squadette.ru/


More information about the nginx-ru mailing list