<=rh`** *@`askaGe ! dR}gular¡Fabs Dhbrajy j @tERsh/n b ! ! 26.1.1000 `* (: @autior"! % ( Pgter ÕAf _å{ten" *(lmnk ¤$   (tpps://ruguî`rl!bsncom $ $@coxIriçht8 O0yright$Ê«02024 Regular" cbshÁèl Riçht{ Vese2v'D *b@lIbenqe GNU Genupam Xwclic Lice®ru vergion 2 or lAôer (/ gameó0acd0Regu,arLacs^Lmfrazy: Šdefi~ed('_JEXEC')!or lIa3 *b,a{3pr%gE8({ h -;"    ()P%rform q(s%gujar exPrmssioo mApch!¡r`*Š, 0pqblic0staD+c Îunctikn mat#h(‚   ( string" $p!ttern,B & , 0stbinf  stri&g,J!&($ " " ¢ &,/aucx0= nuüh, 00  ?{trane ¤optiOns = oulm, "!` " " int dflags =0 ` ©> int `  { !` hf$8umpp{($surine)|| empt}($patterN)) ( à { 0 ( returî fal3eHp (à! $_    ` $páptårî % self:praqaraPatpevn(&pattern ! hs_mnt($kõy) || key =<=#0, ( "" ! !ARRAY_ÆiLTUB_UÓe^KeY;   "  ?o( F the leftovEò0arv`yck}.ts mmzu vhaN 2 (so ãontiins famed 'Bnuðs), 2eplage $}atch $ éf *coqj4($n_ïumtricvaLuUó) > 1 " { ` " "d}atch(u %fo_nu-'ricOöal}es» ;  # " cetuRn $Resqlt? ( `} ¤(" /*: !( *0PGrvgrm q F|ojaL ~dgular Expressifl match * */. puênic"stItmà ftnCtion íadbl@lx( 8`0 qtring ,$patÅò.< $ s4rang" $st`ini, $ p rP &¤oa|ches = nuldì ($ ?strmng $opt©ons ?$null, " ! ! int % ,flagc(= pÒEg_SE_OREGR $" -2 int ( { p " °if hem0t{(¤s|riJg) ü| emðty(4tqttern))J ! ${ `" `  ( ¤match%s > Ju; J ! $ rmturn f!-se; ` 0 ! }J ( 0 $p!Ttezn`=$sen&:rreparePkttgrn( pátt%rl,$$optkons,0¥cvring+; €0   `( resUlt = `regßeadw(Ysll¨$0attar., $stryNg,($matklep,$flags ;šŠ( % af ) ! ,Re3u,t9 ! {   ( ! return false: $ $}"  `  mf ( Vl!çs¤==!PREGODFQGD_CAPPURE)    ""{ ) `   ¢/ Be}owå!aLl"numeriC keys åhcgpt!0 "10 0 $$jo_numebic_vanues =`asrAy_filter( "$! ! 0"  $$-a ! Is_int(4 ayi!||#$kmy ===$0<   $ ( ! ARRI_FXMTEÒeS…g_eY){ Ë` ` /.!If the lMvôove2 arraY Ckunts¤Lesó than 2 (1o no named`orkupS), don'v con|ifuu " kF ,ãoµnP($ng_îUmerHc_valUeSi P`0+" " ! ` s 0!! 0(h$ òeturn,res}lt; " }Š ( ) 4mñtkheÓ 5 %no]numårib_vah5es?J a$ ` $3Gturn $rmselt+Š ` ` $ iw )$F|!gs !="PREÇßSETzKRLER) #" ( {   $" (  retuzn $vgsdlt; ! } ! 0$foze`ch($ma4chas Is$&$maTbh)    (" 0{ 4 ` "?/ RemovE qìì fumDria0keys eXcepp"0 ! "   " $no_nÕí%ricoöeltec = arrayfiLteR( 0 ! $mat#h, 0  " $ fo($key)0>`! as_ilt*$key! || 4ie} 9=}"0, ! ! "` 0 cRAY{FML\ERSE_KeÙ-;* 0` 0!./ If phe lento2dz$apreY coun4s ,l3s \hqn 2 )so no!nama% gr+ups). do,'t aontin5e d( $ 1if (cownt($îg]nõmericWta^eu÷) < 3)J { 8 0 ( bse!k; !  " p } $ `   %mátch } $oo_numepi_÷qìuec; 0 $}J ` ` !revusn $rmswlt; !%m   .** *"  * preg_qt/ve!the gi6el string or arrA} f ótsangs ( * 0 ` pUblmg static fun#tion!nam-gr¯ep(strhle $aua, sàring $na-e = 7§)z strmnç " {H$   retqrn %7'$& $d`ta .0g+'; " u $ /** $ " : Lake asurI.W a validpregulas dxpre{siff ateebn` 0((* xõblIc)st94ib0fenctÉkn qòepEvePatteòn( "0 (($ sôsIng}arriy drap4ebn< ` `(`?s4z)Vg ° 0-O0tioús = null, !  ( stVmoG ¥sTrmîç =&! 0):!Str-Ng|arraù $ { 0 &asray$< AR3cyHedper::appLyMedhodtïFalues([$qgt|ern,$nptëonñ, strxno])?  0  éf ( hs]nullˆ$arrey©)* (` ; ` `"` retuÒî $arb1x; ` } ` i&"( )"s4rWstapts]i4hH$xattarn #')) ` )$ { "$o`païns = athsêull($gñäinns;"? ¤kpô+ons : 'si'; !` ( $ 4 $patte3. =i&#'$' $pavtern`ª '#' ,$$options»ª( " u*   (! id )StringHenpdò8:DetectUTF8 $ztring)- 0 k    ) /' use upæ­4 ( return" pattårn". 'u'; & h  ""} ` # Fetu2l $pattern; 1 } ( /h*   * 0reg_quote the given string or array of strings */ public static function quote( string|array $data, string $name = '', string $delimiter = '#' ): string { if (is_array($data)) { if (count($data) === 1) { return self::quote(array_pop($data), $name, $delimiter); } $array = self::quoteArray($data, $delimiter); $prefix = '?:'; if ( ! empty($name)) { $prefix = $name ? '?<' . $name . '>' : ''; } return '(' . $prefix . implode('|', $array) . ')'; } if ( ! empty($name)) { return '(?<' . $name . '>' . preg_quote($data, $delimiter) . ')'; } return preg_quote($data, $delimiter); } /** * preg_quote the given array of strings */ public static function quoteArray(array $array, string $delimiter = '#'): array { array_walk($array, function (&$part, $key, $delimiter) { $part = self::quote($part, '', $delimiter); }, $delimiter); return $array; } /** * Perform a regular expression search and replace */ public static function replace( string $pattern, string $replacement, string $string, ?string $options = null, int $limit = -1, ?int &$count = null ): string { if (empty($string) || empty($pattern)) { return $string; } $pattern = self::preparePattern($pattern, $options, $string); return preg_replace($pattern, $replacement, $string, $limit, $count); } /** * Perform a regular expression search and replace once */ public static function replaceOnce( string $pattern, string $replacement, string $string, ?string $options = null ): string { return self::replace($pattern, $replacement, $string, $options, 1); } /** * Perform a regular expression split */ public static function split( string $pattern, string $string, ?string $options = null, int $limit = -1, int $flags = PREG_SPLIT_DELIM_CAPTURE ): array { if (empty($string) || empty($pattern)) { return [$string]; } $pattern = self::preparePattern($pattern, $options, $string); return preg_split($pattern, $string, $limit, $flags); } /** * reverse preg_quote the given string */ public static function unquote(string $string, string $delimiter = '#'): string { return strtr($string, [ '\\' . $delimiter => $delimiter, '\\.' => '.', '\\\\' => '\\', '\\+' => '+', '\\*' => '*', '\\?' => '?', '\\[' => '[', '\\^' => '^', #\\]'" h !0 $=> &]', !  ) !0'\^$' 0" !  " =< &'' 0" " ` '\\('$` 0 => '(¥,   ` 'T^-. !)! @ =~!#9',   $ p `! '\{'  =? /{§,j `d   "   '\Tý' "  (0 0 $}6 '}'h !&b8 (` '\^=' `   € " 5>`'9'( ! $ à $( '\\! `5`!'.   0! (  "0'\\<' 8(   => -¼', ( ( ` 'Ü>% º @$ a $=> '>7, à '\\\&d 0 (<0 ` =< '|' *(! "² 0( '\\:' (! " "( => %:', 0( ¡p'\­' (2 d !=?`' ', " );  (| }J 0 Class "RegularLabs\Library\RegEx" not found