私はこのpreg_match_all機能を調整/変更するためのPHPヘルプ/専門知識が必要です。私がしたいのは、順序付けされていないペアのデフォルト値を作成することです。データを正しく照合していますが、デフォルト値を追加するロジックが必要です。 (下記のデータ出力を参照してください)。同じ機能の中でこれを扱うことはできますか?ありがとう!preg_match_allのヘルプとデフォルト値の作成
foreach ($InputFile as $line){
preg_match_all("/([0-9])-([^=]+)=([^;]+);/", $line, $matches, PREG_SET_ORDER);
$LineData = array();
foreach ($matches as $information)
$LineData[$information[2]] = $information[3];
$data[] = $LineData;
print_r($LineData);
}
データファイルは、(8)の順に属性の最大があります:
preg_match_allはスニペット
1-Server
2-Logdate
3-BackupSet
4-StartTime
5-Duration
6-DBServer
7-Size
8-Status
をしかしインスタンスがやる行があるファイル、です5-Duration、7-Size、8-Statusなどのすべての属性を持つわけではありません。
5-Duration => 0
7-Size => 0
8-Status => incomplete
アレイ出力:データ出力を期待
Array ([Server] => hostname3.prop.abc
[Logdate] => Wed Jan 05 2011
[BackupSet] => rfoo101.az1
[StartTime] => 20110105000004
[Duration] => 00:56:47
[DBServer] => rfoo101.prop.az1.kaz.com
[Size] => 56.51
[Status] => Backup succeeded)
Array ([Server] => hostname3.prop.abc
[Logdate] => Wed Jan 05 2011
[BackupSet] => bar202.az4_lvm
[StartTime] => 20110105040003
[DBServer] => bar202.prop.az4.kaz.com)
Array ([Server] => hostname10.prop.az2
[Logdate] => Thu Jan 06 2011
[BackupSet] => bar201_az2_lvm
[StartTime] => 20110106151622
[DBServer] => bar201.prop.az2.kaz.com
[Status] => Backup failed)
(現在):(デフォルト値で)
Array ([Server] => hostname3.prop.abc
[Logdate] => Wed Jan 05 2011
[BackupSet] => rfoo101.az1
[StartTime] => 20110105000004
[Duration] => 00:56:47
[DBServer] => rfoo101.prop.az1.kaz.com
[Size] => 56.51
[Status] => Backup succeeded)
Array ([Server] => hostname3.prop.abc
[Logdate] => Wed Jan 05 2011
[BackupSet] => bar202.az4_lvm
[StartTime] => 20110105040003
[Duration] => 0
[DBServer] => bar202.prop.az4.kaz.com
[Size] => 0
[Status] => incomplete)
Array ([Server] => hostname10.prop.az2
[Logdate] => Thu Jan 06 2011
[BackupSet] => bar201_az2_lvm
[StartTime] => 20110106151622
[Duration] => 0
[DBServer] => bar201.prop.az2.kaz.com
[Size] => 0
[Status] => Backup failed)
コード私は何かのように、これらの属性のデフォルト値を配置したいですヘルプごとの変更:
<?php
$defaults = array(
'Duration' => 0,
'Size' => 0,
'Status' => 'incomplete');
$data = array();
$InputFile = file("test.txt");
foreach ($InputFile as $line){
preg_match_all("/([0-9])-([^=]+)=([^;]+);/", $line, $matches, PREG_SET_ORDER);
$LineData = array();
foreach ($matches as $information)
$LineData[$information[2]] = $information[3];
$data[] = array_merge($defaults, $LineData);
}
print_r($data);
?>
かなり面白いです。 foreach内でpreg_match_all関数の後にこれをプラグインしますか?ありがとう。 – cjd143SD
私は、あなたの特定のケースについての詳細な説明を編集しました。 – Amber
こんにちは、私は入力したコードを上に掲載しました。私はまだ仕事に合併を得ることができません。何かが故障しています。 thx – cjd143SD