2016-03-21 13 views
-1

Günlerce bununla uğraşıyordum ve bunun zor olduğunu hayal bile edemiyorum ama PHP için yeni ve buna takılıyorum.Bir kelimeyi kullanarak php'de bir dosyayı ayrıştırma

Sadece "BWAH013" satırları "BWAH013" başlamadan satırları istemiyorum, bu durumda ben de bu satırı istiyorum.

Girdi:

BWAH013 12-32-1443 specials 
BWAH013 17-52-1412 regular 
BWAH013 72-43-3212 specials 
BWAH013 43-11-5332 specials 
otaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BWAH013 64-12-6432 specials 
BWAH013 19-22-6422 regular 
BWAH013 14-98-5432 specials 
itaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BWAH013 56-76-8754 regular 
BWAH013 76-66-9864 specials 
BWAH013 43-54-3255 regular 
awaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BWAH013 68-19-2343 specials 
BWAH013 75-32-5312 regular 

Çıktı:

BWAH013 43-11-5332 specials 
otaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BWAH013 14-98-5432 specials 
itaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BWAH013 43-54-3255 regular 
awaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
+1

kod örneği dosyayı ayrıştırmak için çalıştık var mı? Evet ise, lütfen sorunuza ekleyin. Bu, uzmanların sorunuzu yanıtlaması için daha kolay hale getiriyor – Jer

+0

Hiç göstermeye değerim yok. –

+1

@ j-doep Kodları yazmak için Stackoverflow'taki kişilere soramayacağınızı unutmayın. Burada yeni görüyorum, bu yüzden bu sayfayı okumanızı tavsiye ederim: http://stackoverflow.com/help/how-to-ask. Kendiniz denediniz herhangi bir kod olmadan, bu sizin sorgunuzda sorununuzu sormak için bizim için zor olacaktır. – Jer

cevap

0

o strpos kullanarak "BWAH013" ile başlayan takdirde explode ve sonra foreach çizgi çek kullanarak bireysel hatları içine senin input kırmak isteyeceksiniz . Ayrıca, kontrol etmek için çizgiyi bir değişkende saklayabilirsiniz.

Böyle bir şey (bir rought taslak; test edilmedi ama fikir olsun):

<?php 
$input = <<< EOT 
BWAH013 12-32-1443 specials 
BWAH013 17-52-1412 regular 
BWAH013 72-43-3212 specials 
BWAH013 43-11-5332 specials 
otaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BWAH013 64-12-6432 specials 
BWAH013 19-22-6422 regular 
BWAH013 14-98-5432 specials 
itaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BWAH013 56-76-8754 regular 
BWAH013 76-66-9864 specials 
BWAH013 43-54-3255 regular 
awaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
itpSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 
draDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
itoxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
BWAH013 68-19-2343 specials 
BWAH013 75-32-5312 regular 
EOT; 

$lines = explode("\n", $input); 
$previous = null; 
$result == ''; 
foreach ($lines AS $line) { 
    // If this line doesn't start BWAH013, the previous line is not null and the previous line starts BWAH013, then add the previous line. 
    if (substr($line, 0, 7) != 'BWAH013' && !is_null($previous) && substr($previous, 0, 7) == 'BWAH013') { 
     $result .= $previous . PHP_EOL; 
    } 

    // Add this line if it does not start BWAH013. 
    if (substr($line, 0, 7) != 'BWAH013') { 
     $result .= $line . PHP_EOL; 
    } 

    $previous = $line; 
} 

echo $result; 
İlgili konular