繁体   English   中英

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

[英]Split string in to multiple parts in 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 />

到目前为止,我正在使用:

while(1) {
    while($data = fgets($socket)) {
        echo nl2br($data);
        flush();

        $ex = explode(' ', $data);

        if($ex[0] == "PING"){

            fputs($socket, "PONG ".$ex[1]."\n");

        }

        if($ex[1] == "NOTICE"){
            if($ex[6] == "connecting"){

            $userstring = $ex[12];
            $usernick = strstr($userstring, '!', true);
            $userip = strstr($userstring, '@');

            }
        }
    }
}
?>

因此$user.nick可以正常工作,但是$user.ip包含@和IP地址。 为什么这包括@但昵称不包括!?

另外我怎么能得到$user.ident之间的! 和@?

尝试:

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

原因包括“ @”是因为(来源: http : //php.net/strstr ):

返回干草堆字符串的一部分,从第一个出现的针开始并包括到干草堆的结尾。

为了解决这个问题,您可以使用如下子字符串:

$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,因为它比子字符串调用更容易阅读/理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM