Php 主机掩码匹配
对于我的IRC机器人,我需要将一个主机掩码与另一个带有通配符的主机掩码进行匹配 例如: 巴勃罗!Pablo@Pablo.users应该匹配:爸?瞧!P?blo@??blo.users 问号表示每个字符和数字 如果可能的话,最好看到它与下面的字符串匹配: 巴勃罗!Pablo@Pablo.users和巴勃罗比赛!Pablo@Pab* 这个!和@总是在主机掩码中 有人能为这个任务创建一个正则表达式吗 我试过了,成功了,但代码庞大,而且常常不准确Php 主机掩码匹配,php,regex,irc,Php,Regex,Irc,对于我的IRC机器人,我需要将一个主机掩码与另一个带有通配符的主机掩码进行匹配 例如: 巴勃罗!Pablo@Pablo.users应该匹配:爸?瞧!P?blo@??blo.users 问号表示每个字符和数字 如果可能的话,最好看到它与下面的字符串匹配: 巴勃罗!Pablo@Pablo.users和巴勃罗比赛!Pablo@Pab* 这个!和@总是在主机掩码中 有人能为这个任务创建一个正则表达式吗 我试过了,成功了,但代码庞大,而且常常不准确 谢谢你 我写这篇文章是为了我正在创作的PHPIRCd f
谢谢你 我写这篇文章是为了我正在创作的PHPIRCd
function match($mask, $expression) {
$expression = str_replace('\\*', '.+', preg_quote($expression, '/'));
return preg_match('/^' . $expression. '$/', $mask);
}
你可以这样称呼它:
match('Pablo!Pablo@Pablo“,”Pab*o!*@*blo')
。这可能不是你想要的,但我希望它能让你走上正轨。当你说“巨大”——什么,100行?5,000? 如果是100行或更少,我建议将其与测试用例一起发布在您的问题中。如果您需要Perl解决方案,可以使用模块中的matches\u mask()
。