在PHP中将字符串拆分为多个部分

在PHP中将字符串拆分为多个部分,php,Php,我正在用PHP编写一个IRC机器人,并试图将下面的通知分成多个部分 :irc.server.com NOTICE PHPServ :*** CONNECT: Client connecting on port 6667 (class users): Guest!Guest@127.0.0.1 (127.0.0.1) [Guest]<br /> 因此,$user.nick工作正常,但$user.ip包括@和ip地址。为什么这包括@而昵称不包括 另外,如何获取介于以下两个参数之间的$u

我正在用PHP编写一个IRC机器人,并试图将下面的通知分成多个部分

:irc.server.com NOTICE PHPServ :*** CONNECT: Client connecting on port 6667 (class users): Guest!Guest@127.0.0.1 (127.0.0.1) [Guest]<br />
因此,
$user.nick
工作正常,但
$user.ip
包括@和ip地址。为什么这包括@而昵称不包括

另外,如何获取介于以下两个参数之间的
$user.ident
!还有@?

试试:

$userParts = explode('@', $userstring);
$userip = end($userParts);

原因是包含“@”是因为(来源:):

返回haystack字符串的一部分,从和开始,包括第一个 出现针状物至干草堆末端

要解决此问题,可以使用如下子字符串:

$userstring = $ex[12];
$exPos = strpos($userstring, '!');
$atPos = strpos($userstring, '@');

$usernick = strstr($userstring, '!', true);
$userip = substr($userstring, $atPos + 1);
$userident = substr($userstring, ($exPos + 1), ($atPos - $exPos) - 1);

我离开了第一个strstr,因为它比子字符串调用更容易阅读/理解。

你在爆炸什么?如果
$ex
是一个字符串数组,我认为它是一个分解的字符串。
$user.nick=
肯定不“工作”,这是无效的PHP。@Ryan抱歉,用完整的代码更新。@user2656114我没有看到你的变量名,因为我不知道你分解的是什么。但正如deceze所说,您的变量名无效,无法正确运行。
$user.nick
确实回显了昵称。但是,我还是删除了
$userstring = $ex[12];
$exPos = strpos($userstring, '!');
$atPos = strpos($userstring, '@');

$usernick = strstr($userstring, '!', true);
$userip = substr($userstring, $atPos + 1);
$userident = substr($userstring, ($exPos + 1), ($atPos - $exPos) - 1);