我想完成这样的事情:
!say some message
然后被带到一个函数,该函数继续内容。你可以想象,我正在听一些文字输入。现在我正面临这个问题,像这样的字符串也会触发case
:
this is !say some text
代码:
$prefix = "!";
switch ($message->content) {
case preg_match("/[^.*]$prefix . 'say' (.*) /", $message->content):
_say($message);
break;
}
function _say($message)
{
$parts = explode("!say", $message->content);
return $message->channel->sendMessage(trim($parts[1]), true);
}
根据我的理解,正则表达式是正确的(也在regexp-tester上确认)。
也使用substr
进行了测试,但也没有。{/ p>
case substr($message->content, 0, 3) == $prefix . 'say' :
我做错了什么?
答案 0 :(得分:1)
命令是一个命令,它不应该是被愚弄的东西。因此,我建议进行简单的字符串比较,而不是使用正则表达式:
$prefix = "!";
function _say($message){
return $message->channel->sendMessage(trim($message), true);
}
if($message->content[0] == $prefix){
if($p = strpos($message->content, ' ') !== false){
$cmd = substr($message->content, 1, $p);
switch($cmd){
case 'say':
_say(substr($message->content, $p));
break;
default:
die('unknown command');
}
} else {
die('empty cmd');
}
} else {
die('no command');
}