在.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)。 我该怎么做?
答案 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:不要恨我