读取文件并使用分隔符拆分

时间:2012-07-19 01:34:21

标签: php delimiter

我有这个文本文件

acmst501:57:Runningacmst506:201:Runningacmst506:203:Runningacmst506:209:Runningacmst506:213:Failed

我想用分隔符拆分。我有这个代码工作。

    <?php
function parseFile($filename, $delimiter) {
    global $splitcontents;
    //$fd = fopen ($filename, "r");
    //$contents = fread ($fd,filesize ($filename));
    //fclose ($fd);
    $contents = file_get_contents($filename);
    $splitcontents = explode($delimiter, $contents);
    return $splitcontents;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Read file and split with delimiter</title>
</head>

<body>
<?php
    parseFile("c:\emap\asrvr505-cslot_state.txt",":");
    foreach ( $splitcontents as $value ) {
        echo "<b>$value<br>";
    }
?>
</body>
</html>

我得到的输出是:

acmst501
57
Running acmst506
201
Running acmst506
203
Running acmst506
209
Running acmst506
213
Failed

但是,我希望它是这样的:

acmst501
57
Running
acmst506
201
Running
...

所以基本上,我想将Running / Failed部分与acmst字段分开。

如何分开这些?另外,我的功能是否正确所以我可以在同一个PHP文件中使用不同的文件?谢谢!

1 个答案:

答案 0 :(得分:1)

此:

$fd = fopen ($filename, "r");
$contents = fread ($fd,filesize ($filename));
fclose ($fd);

将整个缓冲区放在$contents中 - 如果这是您的目标,您也可以使用file_get_contents()

在您的输入中,您有:Runningacmst506。那里没有分隔符。我假设你在:分裂,但在跑步附近没有冒号。

您的示例输入中是否有拼写错误?

如果你澄清了你的意见,我可以给你一个更好的答案。