2016-03-21 6 views
-1

私はこれを数日間苦労していましたが、それは難しいと想像できませんでしたが、私はPHPを初めて使いこなしました。ひとつの単語を使ってPHPでファイルを解析する

私は前の行が "BWAH013"で始まらない限り、 "BWAH013"から始まらないようにしたい。

入力:

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 

出力:

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

は、あなたがファイルを解析しようとしたコードの例を持っていますか?はいの場合は、質問にこれを追加してください。これにより、専門家があなたの質問にもっと簡単に答えることができます。 – Jer

+0

私は誰も見せない価値があります。 –

+1

@ j-doepあなたのコードを書くためにStackoverflowの人に尋ねることはできません。私はあなたがここでは新しいので、このページを読むことをお勧めします:http://stackoverflow.com/help/how-to-ask。あなたが自分で試したコードがなければ、これはあなたの問題のあなたのスクリプトの質問に答えることは難しいでしょう。 – Jer

答えて

0

それはstrposを使用して "BWAH013" で始まる場合は、あなたのexplodeを使用して、個々の行にinput、その後foreachラインチェックを破ることになるでしょう。チェックする変数に行を格納することもできます。この(roughtドラフト;テストが、あなたのアイデアを取得しない)のような

何か:

<?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; 
関連する問題