Php yardım / uzmanlık çimdik / Bu preg_match_all işlevini değiştirmek için ihtiyacı var. Ne yapmak istediğinizi sipariş çiftleri eksik varsayılan değerler oluşturmaktır. Bu doğru verileri eşleşen, ancak ben bazı varsayılan değerler eklemek için bazı mantık gerekir. (Aşağıdaki veri çıkışı BEKLIYOR bakınız). Bu aynı fonksiyon içinde ele alınabilir? Teşekkürler!
preg_match_all pasajı:
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);
}
Veri dosyası (8) bu düzenin niteliklerini bir max:
1-Server
2-Logdate
3-BackupSet
4-StartTime
5-Duration
6-DBServer
7-Size
8-Status
Ama örnekleri gibi 5-Süre, 7-Size, 8-Status gibi tüm niteliklerini YOKTUR hatları vardır burada, dosyada vardır. Ben bu nitelikleri gibi bir şey için varsayılan bir değer yerleştirmek istiyorum:
5-Duration => 0
7-Size => 0
8-Status => incomplete
Dizi çıkış: (Güncel)
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 )
Bekliyoruz veri çıkış: (DEFAULT DEĞERLERİ İLE)
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 )
Yardım başına Kod değişiklikleri:
<?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);
?>