Парсинг определенной части csv файла

Amatory

Новичок
Есть *.csv кол-во строк меняется с перезаписью время от времени, разделителем выступает такая строка:
PHP:
,,$string,,, // Две запятых, Какая та строка(зарания известная), три запятых
Пример всего файла:
PHP:
1,dsd,sdd,,we,5
,,$string,,, // Две запятых, Какая та строка(зарания известная), три запятых
asd,sd,5,s,5,sd
1,dsd,sdd,,we,5
4,5,sdd,,,sad
/*

Рандомное число строк

*/

,,$string,,, // Опять разделитель  //// Две запятых, Какая та строка(зарания известная), три запятых

//И так далее(рандомное число строк и разделителей)
Требуется вывести данные от одного разделителя до другого, т.е. как бы разбить его на части, и вывести определенную.

Парсер записывает строки в массив

Код:
Array
(
    [0] => Array
        (
            [0] => wefsdfsdf
            [1] => 
            [2] => 6546
            [3] => fgdfgdfg dfgdfgd
            [4] => gfdfgd5546
            [5] => 454654654

    [1] => Array
        (
            [0] => 
            [1] => 
            [2] => 6546
            [3] => 6565
            [4] => adfsdfsf
            [5] => 

    [2] => Array
        (
            [0] => 
            [1] => 
            [2] => Та самая строка(зарание известная) - разделитель
            [3] => 
            [4] => 
            [5] => 
        )

//...............

      )
Как выбрать нужнуя часть и вывести только её?
 

riff

Новичок
PHP:
explode(',,string,,', $text);
PHP:
$pos1 = strpos($text, ',,string,,');
$pos1 += strlen(',,string,,');
$pos2 = strpos($text, ',,string,,', $pos1);
$sub_text = substr($text, $pos1, $pos2 - $pos1);
 
Последнее редактирование:

Amatory

Новичок
Спасибо все тем, кто ответил! И особая благодарность Riff`у!

По сабжу, вопрос решен!

Может неправильно сформулировал вопрос, но вот что нужно было:

Оказывается при чтении файла, до его закрытия, считывание происходит с того места, где чтение прекратилось. Далее условие (strpos($cast, $name_pos1), что подсказал Riff, и продолжаем считывать в новом цикле до конечной строки.

Если кому нужно, то вот код, как получилось:

PHP:
$f = fopen("mainRoz.csv", "r");
$name_pos1 = 'Микросхемы отечественные';
$name_pos2 = 'Транзисторы биполярные отечественные';
  
    //Поиск начальной позиции
    while (!feof($f))
    {
          
        $arrM = explode("@",fgets($f));
        $cast = $arrM[0].'&nbsp'.$arrM[1].'&nbsp'.$arrM[2].'&nbsp'.$arrM[3].'&nbsp'.$arrM[4].'&nbsp'.$arrM[5];
      
        if (strpos($cast, $name_pos1))
        {
      
            print($cast);
            print('<br>');
            break;
          
        }
      
    };
  
    //Считывание до конечной позиции
  
    while (!feof($f))
    {
          
        $arrM = explode("@",fgets($f));
        $cast = $arrM[0].'&nbsp'.$arrM[1].'&nbsp'.$arrM[2].'&nbsp'.$arrM[3].'&nbsp'.$arrM[4].'&nbsp'.$arrM[5].'<br>';
      
        if (strpos($cast, $name_pos2) === false)
        {
      
            print($cast);     //Вывод всего, что между начальной и конечной позиций         
          
        }
        else
        {
      
            break;
          
        };
      
    };
  
    fclose($f);
 

WMix

герр M:)ller
Партнер клуба
PHP:
while (!feof($f)){
  $cast = str_replace('@','&nbsp;',fgets($f)).'<br>';
  if(strpos($cast, $name_pos1)) $cast1 = $cast;
  if(strpos($cast, $name_pos2) === false) $cast2 = $cast;
}
echo $cast1.'<br>'.$cast2
 
Сверху