Как разобрать строку типа ххх yyy ?

Vladsol

Новичок
Как разобрать строку типа ххх yyy ?

Нужно из файла считать данные, и "слепить". Данные следующего формата: пробелы, СТРОКА2 .. пробелы СТРОКА1 пробелы...

Короче, из множества данных надо выбирать по 2 фразы, разделенных 5 пробелами (длина первой может меняться) - И склеивать их вместе - подскажите, это реально на РНР сделать? Если да - то как?
 

Vladsol

Новичок
Может объяснил непонятно, прошу прощения.

Надо из текста, примером:

Username Domain Flags Nickname FirstName LastName Sex Birthday СТРОКА1  СТРОКА2
Username Domain Flags СТРОКА1  СТРОКА2 Nickname FirstName LastName Sex Birthday

Выделять строку2 и строку1 ТОЛЬКО. Но дело в том, что строка 1 - это может быть ЛЮБОЙ текст.
 

sakon

П..и.н..ок
>есть опыт
И что тогда мешает найти в мануале нужные функции?
А СТРОКА2 это какой то фиксированный текст?

Кстати. А почему одни и те же данные храняться в разных ячейках?
 

sakon

П..и.н..ок
Так записывай эти данные в определенные ячейки, и тебе же проще будет.
 

Vladsol

Новичок
Ну смотри. Да, я могу выделять из всего текста строки 2. а как строку 1, если она неизвестна и неизвестной длины?
 

sakon

П..и.н..ок
угу.
Как ты выделяешь строку 2?

-~{}~ 22.12.05 00:24:

Vladsol
почитай [m]explode[/m] и [m]array[/m] тебе этого должно хватить.

И еще раз советую определенные данные записывать в определенные ячейки. Тогда никаких извращений непонадобится.
 

Vladsol

Новичок
Чтобы выделять только одну фразу (ту строку2) - подходит вполне. А так чтобы выделять текст, который ПЕРЕД этой строкой находится (вот ту строку 1) - не знаю. :(
И в функциях посмотрел - ничего подходящего.. Я б не писал сюда....
 

Vladsol

Новичок
Попробуем...
Спасибо большое!

-~{}~ 22.12.05 14:31:

Не выходит как-то...
Если, например, использовать explode(" ",$buffer); (после  - три пробела) - то выделяются не только нужные строки, а и ненужные тоже, т.к разделители ( ) - одинаковые. :(
пример Domain Flags И СТРОКА1 СТРОКА2
Поэтому ТОЛЬКО СТРОКА1 СТРОКА2 выделять из всего остального (строка1 неизвестна) не выходит с помощью explode() :(
 

sakon

П..и.н..ок
блин.
PHP:
$arr = explode ("", $buffer);
for ($i=0;$i<count($arr);$i++) 
{ 
      if(trim($arr[$i]) == 'СТРОКА2') 
      { 
             $result = trim($arr[$i]).'     '.trim($arr[$i-1]); 
              echo $result; 
              break; 
       } 
}
 

Vladsol

Новичок
Ну если даже так:

PHP:
<?php
$buffer = '1978-02-24   314   Европа,Украина,Киев   12   2   24   39       00000002   v_v   mail.ru   0   ';
$buffer = ereg_replace('','|',$buffer);
// Пытался заменить  на |, т.к в разных кодировках символ  - не один и тот же...
// Но и с заменой и без него - не работает. 
$arr = explode ('|', $buffer);
for ($i=0;$i<count($arr);$i++)
{
      if(trim($arr[$i]) == 'mail.ru')
      {
             $result = trim($arr[$i]).'     '.trim($arr[$i-1]);
              echo $result;
              break;
       }
}
?>
- не работает, вернее, возвращает пустой $result :(
 

Vladsol

Новичок
А чёрт его знает... Возможно символ табуляции/ новой строки. В блокноте отображается... Блин, я не могу показать, как... :( Похоже на букву "Б"
Можешь скопировать этот символ в буфер обмена, потом - в блокнот, он отобразится как есть.
 
Сверху