Bana PHP ile bu dosyayı ayrıştırmak Yardım

4 Cevap php
Fri Nov 27 10:00:01 EST 2009         974        12506
Fri Nov 27 11:00:01 EST 2009         988        12655
Fri Nov 27 12:00:01 EST 2009        1005        12886
Fri Nov 27 13:00:01 EST 2009        1026        13115
Fri Nov 27 14:00:01 EST 2009        1042        13429

Ben \ n patlayabilir çalıştı ve daha sonra \ t, ancak sekmeler dosyasında var gibi görünüyor ...

4 Cevap

Bu boyutu ne olursa olsun, her boşluk koleksiyonlarda bölünmüş olacak.

$lines = file($myfile);
foreach ($lines as $line) {
    $line = preg_split('/\s+/', $line);
    # do stuff with line
}
$lines = explode( "\r\n", $str );

foreach( $lines as $line){

echo 'date = ' .  substr( $line, 0 , 28) . PHP_EOL;
echo 'var1 =  ' . substr( $line, 28 , 12) . PHP_EOL;
echo 'var2 =  ' . substr( $line, 40 , 12) . PHP_EOL;
echo '
' ; }

Metin dosyaları öngörülebilir uzunluğu (24, 12, ben görebiliyorum 12 karakter) vardır eğer öyleyse mümkün PHP, her şeyden önce bir tamsayı olarak gelen tüm değişkenler davranır o 0000000974 doğru başvurmak zorunda kalmadan tam sayı 974 olarak işlenecek Döşeme.

Bu eğer Regexes aviod alway iyi değil mi?

Bu sütun genişliği sabit gibi görünüyor. Sen birine ihtiyacınız olacak:

  • Substr () kullanın ve her bir sütun ayıklamak, sonra boşluk kırpmak
  • Preg_split () kullanın ve üst üste iki veya daha fazla boşluk arayın '/ \ s + /'
  • Diğer

Sadece tek bir karakter / one uzay maçlar beri olasılıkla, boş öğeleri bir demet dönecektir patlayabilir.

$line = "Fri Nov 27 10:00:01 EST 2009         974        12506";
preg_match_all('~\S+~', $line, $parts);
print_r($parts[0]);

Gerisi size kalmış