我的AJAX聊天处理以下命令
/禁止名称
/锁定
等等。
如果我使用多个单词,比如:
/广播大家好
输出为:
你好
我的问题是:如何使它在命令之后不换行(剪切)文本?
所以当我使用这个命令时:/广播大家好,哈哈哈!
输出将是:大家好,哈哈哈
代替:你好
这是命令的方法:
public function handleCommands($message, $username)
{
// Splits the message.
$str = explode(' ', $message);
// Gets every space of the message, basically this is the command that comes after the slash
$command = substr(strrchr($str[0], '/'), 1);
/**
* If we have a value after the command:
**/
if (isset($str[1]))
{
$name = $str[1];
}
switch ($command)
{
case 'ban':
if(!empty($name))
{
if (ctype_alpha($name))
{
$this->ban($name, $username);
}
else
{
echo "Syntax Error. Do not use numbers or special characters.";
break;
}
}
else
{
echo "Syntax Error. usage: /ban (User name)";
break;
}
break;
case 'prune':
$this->prune($username);
break;
case '':
echo 'Available commands: /ban, /prune';
break;
case 'lock':
try
{
$this->lockChat($username);
}
catch (exception $r)
{
echo $r->getMessage();
}
break;
case 'broadcast':
echo $name;
break;
case 'unlock':
try
{
$this->unLockChat($username);
}
catch (exception $r)
{
echo $r->getMessage();
}
break;
default:
echo 'That command does not exist!';
break;
}
}
知道吗?
问题位于这种情况:
case 'broadcast':
echo $name;
break;
更改这行代码
if (isset($str[1]))
{
$name = $str[1];
}
至
if (is_array($str)) {
$name = array_shift($str);
$name = implode(" ", $name);
}
发现问题。需要设置极限以爆炸功能:
$str = explode(' ', $message, 2);