All pastes #941591 Raw Edit

Untitled

public php v1 · immutable
·published 2008-03-13 20:23 UTC
rendered paste body
				// Find all the braces subgroups				preg_match_all( '%\{([^\}.]+)+\}%', $pattern, $matches );								// Replace commas by vertical bars and wrap values with parentheses				$new_parens= array();				foreach ($matches[1] as $k => $match) {					$new_parens[$k]= preg_replace( '%,%', '|', $match );					$new_parens[$k]= "(" . $new_parens[$k] . ")";				}								// We will use this pattern to replace the braces by our parentheses alternative patterns				$old_braces= preg_replace( '%.+%', '%$0%', $matches[0] );								// Prepare the vague pattern using stars rather than possible values in braces				$stars_pattern= preg_replace( '%\{([^\}.]+)+\}%', '*', $pattern );								// Prepare the parentheses version of the pattern				$parens_pattern= preg_replace( $old_braces, $new_parens, $pattern );								// Get all the files that could match our pattern				$files_list= Utils::glob( $stars_pattern, ($flags-128) );								// Filter out non-matching files				$result= preg_grep( "%" . $parens_pattern . "%i", $files_list );				// Return a reindexed array, else there could be missing keys				$result= array_values($result);