[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Чтение файла по заданой позиции
gudzik
Привет!
Может и очень детский вопрос, но никак не могу врубать как вытянуть кусок строки с файла. Первый раз дело с файлами имею…

Например с п’ятой строки, седьмой позиции, 100 символов вправо…

Помогите кто чем может!




Спустя 34 минуты, 27 секунд (2.04.2012 - 17:56) sergeiss написал(а):
Цитата (gudzik @ 2.04.2012 - 18:21)
Например с пятой строки, седьмой позиции, 100 символов вправо…

Если файл небольшой, то используй функцию file() для записи файла в массив. Если файл большой, то открывай fopen(), а затем читай построчно (fgets() и другие функции) вплоть до нужного места.
А затем из нужной строки выцепляй данные.

Спустя 17 минут, 4 секунды (2.04.2012 - 18:13) gudzik написал(а):
Файлы не большие. Что то похоже до банковских выписок.
Их у меня очень много, и теперь мне часто нужно будет инфу доставать.

Так вот, я хочу сделать их перебор с вырезкой из них данных.
Нужных мне данных там всего 5 строчек.
Первая строка имеет статическое местонахождение.
А остальных четыре нужно искать по заданному условию.

Спустя 15 минут, 38 секунд (2.04.2012 - 18:28) gudzik написал(а):
fopen() - почему то мои файлы не открывает
с помощью file() прочитал но как теперь с ним обращаться ума не приложу

Спустя 29 минут, 8 секунд (2.04.2012 - 18:57) Placido написал(а):
Цитата (gudzik @ 2.04.2012 - 17:28)
fopen() -  почему то мои  файлы не открывает
с помощью file()  прочитал но как теперь с ним обращаться ума не приложу

Как с обычным массивом, где каждый элемент "соответствует строке файла, с символами новой строки включительно".

Спустя 1 час, 43 минуты, 40 секунд (2.04.2012 - 20:41) sergeiss написал(а):
Цитата (gudzik @ 2.04.2012 - 19:28)
с помощью file() прочитал но как теперь с ним обращаться ума не приложу

Как минимум, хэлп почитать не повредит: http://www.php.net/manual/ru/function.file.php

И еще лучше - найди на том же сайте хэлп в формате CHM и скачай его себе. Ну очень полезная штуковина smile.gif

Спустя 4 часа, 37 минут, 3 секунды (3.04.2012 - 01:18) Guest написал(а):
сделал проход по вайлам, сделал их слитие в один, дальше хочел сделать выборку по нужным мне параметрам а мне выдает что моих данных в файле нет, хотя они там есть

вот мой код

<?php

$catalog = "source";
$dir = opendir ($catalog);
while (($file = readdir($dir)) !== FALSE) {
if($file != "." && $file != ".."){
if(is_dir($catalog)){
echo "<a href='?cat=".$ses_sion.$file."'>".$file."</a> (каталог)";
}
if(is_file($catalog."/".$file)){

echo "<b>".$file."</b> (файл)</i><br />";

$f = file($catalog."/".$file);

for($i=5; $i<count($f)-30; $i++){
$line=$f[$i+13];
//echo $file.$f[5].$line."<BR>";

$findme = '13050';
$pos = strpos($lime, $findme);

if ($pos === false) {
echo "Строка '$findme' не найдена в строке '$line' <br />";
} else {
echo "Строка '$findme' найдена в строке '$line' <br />";
echo " в позиции $pos";
}

}

}
}
}

closedir ($dir);

?>


а вот кусок результата:

Строка '13050' не найдена в строке ' 1 801 11010200 0,00 354,75 '
Строка '13050' не найдена в строке ' 1 811 13050100 0,00 43,64 '
Строка '13050' не найдена в строке ' 1 812 13050200 0,00 2 095,58 '
Строка '13050' не найдена в строке ' 1 813 13050300 0,00 1 555,74 '
Строка '13050' не найдена в строке ' 1 815 13050500 0,00 7 087,78 '
Строка '13050' не найдена в строке ' 1 844 11011200 0,00 9 982,01 '
Строка '13050' не найдена в строке ' 1 850 22080402 0,00 5 111,60 '

как видно мои данные строка есть в строке, но почему -то не находит...

в чем же дело????


Спустя 2 минуты, 45 секунд (3.04.2012 - 01:21) Guest написал(а):
простите за ошыбки, ночь... наверное сплю...

Спустя 58 минут, 53 секунды (3.04.2012 - 02:20) FatCat написал(а):
Для поиска вхождения подстроки обычно пользуюсь stristr, с ним всё просто:
if(stristr($lime, $findme))echo "Строка '$findme' найдена в строке '$line' <br />";
else echo "Строка '$findme' не найдена в строке '$line' <br />";

Спустя 6 часов, 7 минут, 2 секунды (3.04.2012 - 08:27) gudzik написал(а):
Цитата (FatCat @ 2.04.2012 - 23:20)
Для поиска вхождения подстроки обычно пользуюсь stristr, с ним всё просто:
if(stristr($lime, $findme))echo "Строка '$findme' найдена в строке '$line' <br />";
else echo "Строка '$findme' не найдена в строке '$line' <br />";

не, это тоже не помогло...

Спустя 20 минут, 12 секунд (3.04.2012 - 08:47) I++ написал(а):
Цитата (gudzik @ 2.04.2012 - 19:13)
Файлы не большие. Что то похоже до банковских выписок.
Их у меня очень много, и теперь мне часто нужно будет инфу доставать.

Так вот, я хочу сделать их перебор с вырезкой  из них данных.
Нужных мне данных там всего 5 строчек.
Первая строка имеет статическое местонахождение.
А остальных четыре нужно искать по заданному условию.



Цитата
А остальных четыре нужно искать по заданному условию.


Условия какие? Я конечно мог бы воспользоваться телепатией, но я блюду закон о том, что настоящий мастер никогда не использует свое искусство без крайней необходимости.


P.S

как меня задолбал html в BB кодах, поправьте форум

Спустя 13 минут, 55 секунд (3.04.2012 - 09:01) I++ написал(а):
<?php

$fp = fopen('read.php', 'r');

fseekpos($fp, 27, 2);

var_dump(trim(fgets($fp, 100)));

function fseekpos($fp, $line, $offset)
{
fseek($fp, 0, SEEK_SET);

for($i=1;$i<$line;$i++)
{
if(feof($fp))
return false;
fgets($fp, 1024);
}

if(fseek($fp, $offset, SEEK_CUR) === 0)
return true;
else
return
false;
}


// Hello =)

?>

Спустя 14 минут, 18 секунд (3.04.2012 - 09:15) killer8080 написал(а):
gudzik
Покажи образец текста. Если он шаблонный, можно использовать регулярки, это даже проще.

Спустя 16 минут, 49 секунд (3.04.2012 - 09:32) gudzik написал(а):
у меня заработало...
просто я тупо скопипастил код написаный FatCat-том, и отписался не проверив его на ошибки, а там в первой строки просто ошибка при вводе - $lime, а должно было выть $line.

всем огромное спасибо!!!

з.ы. файлы действительно шаблонные, только имеют количество строк разное...

позже закину, сейчас нету при себе.

эта тема мне будет еще интересна, так как у меня есть еще некие задачи по этим файлам

Спустя 1 час, 14 минут, 2 секунды (3.04.2012 - 10:46) gudzik написал(а):
вот не задача...
при использовании file() ломается структура строки

а мне нужно чтобы структура строки сохранилась в таком исходном виде

        1      512 22010300                         0,00               34,00
1 514 18040100 0,00 2 031,00
1 515 18040200 0,00 1 176,00
1 530 19040100 0,00 2 528,23
1 537 22090100 0,00 53,55
1 558 41020300 0,00 203 800,00
1 567 41020900 0,00 13 750,00
1 630 41021603 0,00 4 500,00
1 800 11010100 0,00 34 750,58
1 801 11010200 0,00 347,69
1 806 11020202 0,00 2 095,00
1 811 13050100 0,00 779,17
1 813 13050300 0,00 7 063,56



то есть, нужно сохранить пробелы между столбцами...

Спустя 7 минут, 42 секунды (3.04.2012 - 10:54) killer8080 написал(а):
Цитата (gudzik @ 3.04.2012 - 10:46)
при использовании file() ломается структура строки

быть такого не может smile.gif
Выведи контент в тег <pre></pre>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.