| | |
| | | */ |
| | | public static function tokenize_string($str, $minlen = 2) |
| | | { |
| | | $expr = array('/[\s;\/+-]+/ui', '/(\d)[-.\s]+(\d)/u'); |
| | | $expr = array('/[\s;,"\'\/+-]+/ui', '/(\d)[-.\s]+(\d)/u'); |
| | | $repl = array(' ', '\\1\\2'); |
| | | |
| | | if ($minlen > 1) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * Compare two strings for matching words (order not relevant) |
| | | * |
| | | * @param string Haystack |
| | | * @param string Needle |
| | | * @return boolen True if match, False otherwise |
| | | */ |
| | | public static function words_match($haystack, $needle) |
| | | { |
| | | $a_needle = self::tokenize_string($needle, 1); |
| | | $haystack = join(" ", self::tokenize_string($haystack, 1)); |
| | | |
| | | $hits = 0; |
| | | foreach ($a_needle as $w) { |
| | | if (stripos($haystack, $w) !== false) { |
| | | $hits++; |
| | | } |
| | | } |
| | | |
| | | return $hits >= count($a_needle); |
| | | } |
| | | |
| | | /** |
| | | * Parse commandline arguments into a hash array |
| | | * |
| | | * @param array $aliases Argument alias names |