PHP:拆分字符串并打印

时间:2011-05-07 22:36:02

标签: php string explode

我的服务器输出看起来像这样 PLAYER_ENTERED name ipaddress username

如果字符串包含PLAYER_ENTERED,则字符串中将始终有3个空格将其分开(如何修改它以便它也这样做?)。我想打印出ipaddress和用户名(最后2个部分)。 如何才能做到这一点?


这是打印出整个事物的代码:

$q = $_REQUEST["ipladder"];
$f = fopen("ladderlog.txt", "r");
while (($line = fgets($f)) !== FALSE)
{
    if (strstr($line, $q)) 
    {
        print "<li>$line"; 
    } 

我想这会使用explode(),但我已经放弃了尝试,因为我很难知道如何编写php。

期望输出
用户名ipaddress

5 个答案:

答案 0 :(得分:3)

$q = $_REQUEST["ipladder"];
$f = fopen("ladderlog.txt", "r");
while (($line = fgets($f)) !== FALSE)
{
    if (strstr($line, $q)) 
    {
        $data = explode(" ", $line); // split using the space into an array
                                     // array index 0 = PLAYER_ENTERED
        print "IP:" . $data[1];      // array index 1 = IP
        print "Name: " . $data[2];   // array index 2 = name
    }
}

答案 1 :(得分:1)

试试这个......

  <?
  $str = "PLAYER_ENTERED name 108.21.131.56 username";
    if ( preg_match( "~^(.+)\s+(.+)\s+([\d\.]+)\s+(.+)$~msi", $str, $vv ))
         echo $vv[3] .  " and " .$vv[4] ;
    else "N/A";
 ?>

IMHO Perl regexp - 解析字符串的正确方法......

答案 2 :(得分:1)

您可以使用substr()检查$line的前14个字符是否等于PLAYER_ENTERED,然后使用list()explode()从该行中提取数据。< / p>

$q = $_REQUEST["ipladder"];
$f = fopen("ladderlog.txt", "r");
while(($line = fgets($f)) !== FALSE)
{
    if(substr($line, 0, 14) == 'PLAYER_ENTERED'){
        list($event, $name, $ip, $username) = explode($string); // here they come!

        echo 'Name: ' . $name . ', ip: ' . $ip . ', username: ' . $username;
    }
}

答案 3 :(得分:0)

一种方法是:

$tokens = explode(' ', $line);
if (count($tokens) == 4 && $tokens[2] == $q) {
    printf('IP: %s Username: %s', $tokens[2], $tokens[3]);
}

答案 4 :(得分:0)

<?php
$str = 'PLAYER_ENTERED name 108.21.131.56 username';

$data = explode(" ", $str )

print_r($data)

?>