Соответствие IRC Hostmask - PullRequest
       2

Соответствие IRC Hostmask

0 голосов
/ 09 января 2011

Для моего бота IRC мне нужно сопоставить маску хоста с другой маской хоста с подстановочными знаками в ней.

Пример:

Pablo!Pablo@Pablo.users должно совпадать: Pa? Lo! P?blo@??blo.users

Знак вопроса означает каждый символ и число.

Если это возможно, было бы неплохо увидеть, что он соответствует строке ниже:

Pablo!Pablo@Pablo.users совпадает с Пабло! Пабло @ Паб *

The!и @ всегда находятся в маске хоста.

Может ли кто-нибудь сделать регулярное выражение для этой задачи?

Я пробовал, успешно, но код огромен и часто неточен.

Спасибо, спасибо!

1 Ответ

0 голосов
/ 09 января 2011

Я написал это для своего PHPIRCd, который я создаю.

function match($mask, $expression) {
    $expression = str_replace('\\*', '.+', preg_quote($expression, '/'));
    return preg_match('/^' . $expression. '$/', $mask);
}

Вы можете назвать это так: match('Pablo!Pablo@Pablo', 'Pab*o!*@*blo').Возможно, это не совсем то, что вы ищете, но я надеюсь, что это направит вас на правильный путь.

...