如果你只想使用一个正则表达式,你可以这样做:
$selectors = array( 'fatal', '500'); // Array of selectors (in priority order)
$delimiter = '/';
$regex = $delimiter . '(' . implode('|', array_map( 'preg_quote', $selectors, array_fill( 0, count( $selectors), '/'))) . ')' . $delimiter;
preg_match_all( $regex, $string, $matches);
按照数组的顺序查看我们找到了哪些选择器:
$found_selectors = array_flip( $matches[1]);
foreach( $selectors as $selector) {
if( isset( $found_selectors[$selector]))
return $selector;
}
请注意,我翻转了$matches[1]
数组以在数组中获得恒定的查找时间,而不是执行array_search()
/ in_array()
,这两者都将执行线性搜索。
您可以从这个演示fatal
中看到,给定您的输入字符串,这会产生。