0

私はこのテキストファイルを持っています

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 ファイル内の異なるファイルで使用できますか? ありがとう!

4

1 に答える 1

1

これ:

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

バッファ全体を一度に入れ$contentsます - それがあなたの目標なら、あなたも使うかもしれませんfile_get_contents()

入力には次のものがありますRunningacmst506。そこに区切りはありません。で分割していると思いますが:、Running の近くにコロンはありません。

入力例にタイプミスはありますか?

入力内容を明確にしていただければ、より適切な回答を差し上げることができます。

于 2012-07-19T01:37:32.557 に答える