2016-03-21 2 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

Вы хотите разорвать ваши input в отдельные строки, используя explode, а затем проверить foreach линии, если он начинается с "BWAH013" с помощью strpos , Вы также можете сохранить строку в переменной для проверки.

Что-то вроде этого (в 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; 
Смежные вопросы