晚上好。 我正在制作一个IRC机器人,当你提到他时会做出回应。我想知道的是当有人真正说出他的名字时,如何让他回复。这就是我到目前为止($ match [3]是有人在频道上说的消息,是的,条形码是因为我希望它不区分大小写):
if (stripos($match[3], "ircBot") !== false) {
$isMentioned = true;
}else { $isMentioned = false; }
虽然这实际上检测到有人是否说出了他的名字,但只有在消息的开头提到他才会有效,例如:
如果“ircBot”在$ match [3]内任何地方而不仅仅是开头
,我希望它返回true答案 0 :(得分:1)
您必须寻找字边界以避免有人称为MircBot
// using in_array
$isMentioned = in_array('ircbot', preg_split('/\s+/', mb_strtolower($match[3])));
// using regex word boundaries
$isMentioned = preg_match('/\b(ircBot)\b/i', $match[3]);
答案 1 :(得分:0)
使用stristr
代替
if (stristr($match[3], "ircBot") !== false) {
$isMentioned = true;
}else { $isMentioned = false; }
答案 2 :(得分:0)
我认为您的错误在其他地方,例如$ match [3]的构造。这很好用:
$isMentioned = stripos('This is in the middle of ircBot the string','ircbot') !== false;
echo( $isMentioned ? 'Is Mentioned' : 'Sad ignored bot');