Eugene Lee wrote:
 
> On Tue, Nov 18, 2003 at 01:15:32PM +0100, Adam i Agnieszka Gasiorowski FNORD wrote:
> :
> :       There is an array of regexes, for example
> :
> :  $array = array('moon', '[wh]ood', '[^as]eed' ...
> :  (about 300 entries).
> :
> :       I want to sort it comparing to the
> :  character lenght of a regex. For example
> :  [wh]ood is 4 characters, moon is 4 characters.
> :  There are only letters of the alphabet and
> :  letter ranges present in those regexes. I
> :  want the "longest" ones first.
> :
> :       How would you write the sorting function?
> 
> This might be the most functionally correct, although it's definitely
> not the fastest route.

         Thank you, that will certainly work :8]. Does
 anyone have any thoughts how to make it faster? It is
 not VERY critical, because the calculation will be
 done only once, at initialization, but...well, you 
 know :8].

                        * * *

         How about...if I count the number of ']'
 in string and then add it to the strlen - (the
 number of ']' x 2)? There are no [ nor ] in these
 except in the character range parts. Does that
 look faster than applying regular expression?
 
>         function re_len($pat)
>         {
>                 return strlen(preg_replace('/\[[^]]+]/', '_', $pat));
>         }
> 
>         function re_sort($a_pat, $b_pat)
>         {
>                 $a = re_len($a_pat);
>                 $b = re_len($b_pat);
>                 if ($a == $b)
>                 {
>                         return 0;
>                 }
>                 return ($a < $b ) ? -1 : 1;
>         }
> 
>         usort($array, 're_sort');
> 
> BTW, re_len() will bomb on certain oddball patterns with strange ranges.

        Like? Sorry, I can't think of anything
 right now...

-- 
Seks, seksić, seksolatki... news:pl.soc.seks.moderowana
http://hyperreal.info  { iWanToDie }   WiNoNa    )   (
http://szatanowskie-ladacznice.0-700.pl  foReVeR(  *  )
Poznaj jej zwiewne kształty... http://www.opera.com 007

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to