1
私はこのような何かを達成したい:その後、コンテンツに進み関数に取られするpreg_matchでスイッチケース(+/strposで始まる)
!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
でもテストされていますが、どちらでもありません。
case substr($message->content, 0, 3) == $prefix . 'say' :
私は間違っていますか?
質問は、関数呼び出しの出力をテストしましたか? '$ message-> content'がデフォルトで正しいと仮定しています。デバッグはプログラミングの鍵です。 – Xorifelse
まあ、それは正しい部分なので、 '!say'の後ろのすべてが、文字列の位置に関係なく – DasSaffe
' substr($ message-> content、0、3)== $ prefixを使うべきでしょう。 preg_match()の代わりに 'say''を使います。これはおそらく、より長いコマンドのために 'switch'ステートメントが変更されるべきであることを意味します。しかし...あなたは '{space} 'の最初の' strpos() 'の部分文字列を – Xorifelse