Как в PHP из строк выбрать только идущие в определенном порядке?

Как выбрать только строки (читаем из файла) в которых идет сначала:

  1. Сначала '<Upload' или '<SUpload'
  2. потом 'name'
  3. потом 'ftpServer'

Т.е строки в которых нет такого порядка следования не нужны.

string(10) "<Upload"
string(19) "name = events"
string(36) "ftpServer = s1.ru"
string(10) "<SUpload"
string(16) "name = s33"
string(36) "ftpServer = 192.168.0.68"
string(16) "name = name1"
string(25) "name = name22_test"
string(10) "<Upload"
string(19) "name = name44"
string(36) "ftpServer = 192.168.0.69"

Должно получиться:

string(10) "<Upload"
string(19) "name = events"
string(36) "ftpServer = s1.ru"
string(10) "<SUpload"
string(16) "name = s33"
string(36) "ftpServer = 192.168.0.68"
string(10) "<Upload"
string(19) "name = name44"
string(36) "ftpServer = 192.168.0.69"

Ответы (1 шт):

Автор решения: Movs

Загнать в массив, пробежаться по массиву и отобрать нужное. Как-то так:

for( $i=0; $i<count($lines)-2; $i++){
    if( preg_match('/<S?Upload/', $lines[$i] && preg_match('/name/', $lines[$i+1] && preg_match('/ftpServer/', $lines[$i+2] ){
        $result[]=$lines[$i];
        $result[]=$lines[$i+1];
        $result[]=$lines[$i+2];
    }
}
→ Ссылка