通过php在条件中搜索.txt文件

时间:2013-11-23 10:52:45

标签: php

在.txt文件中:

---
FieldType: Text
FieldName: FirstName
FieldFlags: 0
FieldValue: Mehedee
FieldJustification: Left

---
FieldType: Text
FieldName: Age
FieldFlags: 0
FieldValue: 25
FieldJustification: Left

我想在FieldValue之后获取值:如果FieldValue之前的“FieldName:FirstName”。

我能够在“FieldValue:”之后解析值,但是如果“FieldName:FirstName”仍然存在则不能,之后应该得到FieldValue :( Mehedee)。 我该怎么做?

1 个答案:

答案 0 :(得分:1)

MEH。

首先让我们将数据解析为更易于管理的内容。

$all = file_get_contents('your/file.txt');
$rows = explode('---',$all);
$data = array();
foreach ( $rows as $row ) {
    $row = trim($row);
    if ( strlen($row) ) {
        $cols = explode("\n",$row);
        $rowArray = array();
        foreach ( $cols as $col ) {
            $parts = explode(':',$col);
            if ( isset($parts[0],$parts[1]) ) {
                $rowArray[$parts[0]] = trim($parts[1]);
            }
        }
        if ( count($rowArray) ) {
            $data[] = $rowArray;
        }
    }
}

你可以看到它做了什么:

print_r($data);

输出:

Array
(
    [0] => Array
        (
            [FieldType] => Text
            [FieldName] => FirstName
            [FieldFlags] => 0
            [FieldValue] => Mehedee
            [FieldJustification] => Left
        )

    [1] => Array
        (
            [FieldType] => Text
            [FieldName] => Age
            [FieldFlags] => 0
            [FieldValue] => 25
            [FieldJustification] => Left
        )

)

然后是一种使用它的方法的例子:

foreach ( $data as $row ) {
    echo 'field value is '.$row['FieldValue'];
}

并输出:

  

字段值是Mehedee

     

字段值为25

SO:不要恨我