Может и очень детский вопрос, но никак не могу врубать как вытянуть кусок строки с файла. Первый раз дело с файлами имею…
Например с п’ятой строки, седьмой позиции, 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 строчек.
Первая строка имеет статическое местонахождение.
А остальных четыре нужно искать по заданному условию.
Их у меня очень много, и теперь мне часто нужно будет инфу доставать.
Так вот, я хочу сделать их перебор с вырезкой из них данных.
Нужных мне данных там всего 5 строчек.
Первая строка имеет статическое местонахождение.
А остальных четыре нужно искать по заданному условию.
Спустя 15 минут, 38 секунд (2.04.2012 - 18:28) gudzik написал(а):
fopen() - почему то мои файлы не открывает
с помощью file() прочитал но как теперь с ним обращаться ума не приложу
с помощью 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 и скачай его себе. Ну очень полезная штуковина

Спустя 4 часа, 37 минут, 3 секунды (3.04.2012 - 01:18) Guest написал(а):
сделал проход по вайлам, сделал их слитие в один, дальше хочел сделать выборку по нужным мне параметрам а мне выдает что моих данных в файле нет, хотя они там есть
вот мой код
а вот кусок результата:
Строка '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 '
как видно мои данные строка есть в строке, но почему -то не находит...
в чем же дело????
вот мой код
<?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 />"; |
не, это тоже не помогло...
Спустя 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.
всем огромное спасибо!!!
з.ы. файлы действительно шаблонные, только имеют количество строк разное...
позже закину, сейчас нету при себе.
эта тема мне будет еще интересна, так как у меня есть еще некие задачи по этим файлам
просто я тупо скопипастил код написаный FatCat-том, и отписался не проверив его на ошибки, а там в первой строки просто ошибка при вводе - $lime, а должно было выть $line.
всем огромное спасибо!!!
з.ы. файлы действительно шаблонные, только имеют количество строк разное...
позже закину, сейчас нету при себе.
эта тема мне будет еще интересна, так как у меня есть еще некие задачи по этим файлам
Спустя 1 час, 14 минут, 2 секунды (3.04.2012 - 10:46) gudzik написал(а):
вот не задача...
при использовании file() ломается структура строки
а мне нужно чтобы структура строки сохранилась в таком исходном виде
то есть, нужно сохранить пробелы между столбцами...
при использовании 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() ломается структура строки |
быть такого не может

Выведи контент в тег <pre></pre>