????JFIF??x?x????'
Server IP : 104.21.96.1 / Your IP : 216.73.216.145 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/tempvsty/dchsreunion.com/wp-content/themes/celebration/php/ |
Upload File : |
<?php /** * * Regex management. * */ namespace CssCrush; class Regex { // Patterns. public static $patt; // Character classes. public static $classes; public static function init() { self::$patt = $patt = new \stdClass(); self::$classes = $classes = new \stdClass(); // CSS type classes. $classes->ident = '[a-zA-Z0-9_-]+'; $classes->number = '[+-]?\d*\.?\d+'; $classes->percentage = $classes->number . '%'; $classes->length_unit = '(?i)(?:e[mx]|c[hm]|rem|v[hwm]|in|p[tcx])(?-i)'; $classes->length = $classes->number . $classes->length_unit; $classes->color_hex = '#[[:xdigit:]]{3}(?:[[:xdigit:]]{3})?'; // Tokens. $classes->token_id = '[0-9a-z]+'; $classes->c_token = '\?c' . $classes->token_id . '\?'; // Comments. $classes->s_token = '\?s' . $classes->token_id . '\?'; // Strings. $classes->r_token = '\?r' . $classes->token_id . '\?'; // Rules. $classes->u_token = '\?u' . $classes->token_id . '\?'; // URLs. $classes->t_token = '\?t' . $classes->token_id . '\?'; // Traces. $classes->a_token = '\?a(' . $classes->token_id . ')\?'; // Args. // Boundries. $classes->LB = '(?<![\w-])'; // Left ident boundry. $classes->RB = '(?![\w-])'; // Right ident boundry. // Recursive block matching. $classes->block = '(?<block>\{\s*(?<block_content>(?:(?>[^{}]+)|(?&block))*)\})'; $classes->parens = '(?<parens>\(\s*(?<parens_content>(?:(?>[^()]+)|(?&parens))*)\))'; // Misc. $classes->vendor = '-[a-zA-Z]+-'; $classes->hex = '[[:xdigit:]]'; $classes->newline = '(\r\n?|\n)'; // Create standalone class patterns, add classes as class swaps. foreach ($classes as $name => $class) { $patt->{$name} = '~' . $class . '~S'; } // Rooted classes. $patt->rooted_ident = '~^' . $classes->ident . '$~'; $patt->rooted_number = '~^' . $classes->number . '$~'; // @-rules. $patt->import = Regex::make('~@' . 'import \s+ ({{u_token}}) \s? ([^;]*);~ixS'); $patt->charset = Regex::make('~@charset \s+ ({{s_token}}) \s*;~ixS'); $patt->mixin = Regex::make('~@mixin \s+ (?<name>{{ident}}) \s* {{block}}~ixS'); $patt->fragmentCapture = Regex::make('~@fragment \s+ (?<name>{{ident}}) \s* {{block}}~ixS'); $patt->fragmentInvoke = Regex::make('~@fragment \s+ (?<name>{{ident}}) {{parens}}? \s* ;~ixS'); $patt->abstract = Regex::make('~^@abstract \s+ (?<name>{{ident}})~ixS'); // Functions. $patt->functionTest = Regex::make('~{{ LB }} (?<func_name>{{ ident }}) \(~xS'); $patt->thisFunction = Functions::makePattern(array('this')); // Strings and comments. $patt->string = '~(\'|")(?:\\\\\1|[^\1])*?\1~xS'; $patt->commentAndString = '~ # Quoted string (to EOF if unmatched). (\'|")(?:\\\\\1|[^\1])*?(?:\1|$) | # Block comment (to EOF if unmatched). /\*(?:[^*]*\*+(?:[^/*][^*]*\*+)*/|.*) ~xsS'; // Misc. $patt->vendorPrefix = '~^-([a-z]+)-([a-z-]+)~iS'; $patt->ruleDirective = '~^(?:(@' . 'include)|(@extends?)|(@name))[\s]+~iS'; $patt->argListSplit = '~\s*[,\s]\s*~S'; $patt->cruftyHex = Regex::make('~\#({{hex}})\1({{hex}})\2({{hex}})\3~S'); $patt->token = Regex::make('~^ \? (?<type>[a-zA-Z]) {{token_id}} \? $~xS'); } public static function make($pattern) { static $cache = array(); if (isset($cache[$pattern])) { return $cache[$pattern]; } return $cache[$pattern] = preg_replace_callback('~\{\{ *(?<name>\w+) *\}\}~S', function ($m) { return Regex::$classes->{ $m['name'] }; }, $pattern); } public static function matchAll($patt, $subject, $offset = 0) { $count = preg_match_all($patt, $subject, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER, $offset); return $count ? $matches : array(); } } Regex::init();