Форум → Программирование → PHP для идиотов → Поиск строки в текстовом файле
Поиск строки в текстовом файле
Страницы: ← Следующая страница →
-
Добрый день!
Подскажите пожалуйста функцию PHP с помощью которой можно выдернуть строчку из файла по первому и последнему вхождению символа в строку.
Например так:
1 Первая строчка #
2 Вторая строчка #
3 Третья строчка #
Как сделать что бы выдернуть строчку по 1 символу я нашел, строку находит, но и выводит все следующие строки. А надо выбирать строку по первому символу и закончить последним (#) -
Авг. 1, 2008, 11:33 д.п., спустя 30 минут 20 секунд
Делай запись в файл так:
file.txt1|Первая строчка|#
2|Вторая строчка|#
3|Третья строчка|#
а вот скрипт обработки
script.php
$fh=fopen("file.txt", "a+");
$qwe=-1;
while (!feof($fh))
{
$qwe++;
$CountA[$qwe]=fgets($fh);
$CountB[$qwe]=explode("|", $CountA[$qwe]);
}
echo $CountB['0']['0'];//выведет 1
echo $CountB['0']['2'];//выведет #
echo $CountB['1']['1'];//выведет Вторая строчкаYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
Авг. 1, 2008, 11:43 д.п., спустя 10 минут 1 секунду
А по проще можно как-нибудь? без эксплода. Не хочется резать строчки, потому что у меня и так все порезанно уже и в List/menu засунуто -
Авг. 1, 2008, 12:09 п.п., спустя 26 минут 12 секунд
$fh=fopen("file.txt", "a+");
$qwe=0;
while (!feof($fh))
{
$CountA[$qwe]=fgets($fh);
$CountB[$qwe]=preg_replace('|[0-1]+(.*)#|', '\\1',$CountA[$qwe]);
$qwe++;
}
echo $CountB['0'];//выведет Первая строчка
echo $CountB['1'];//выведет Вторая строчка
Timur: код оформляем -
Авг. 1, 2008, 12:13 п.п., спустя 4 минуты 16 секунд
Professor, ну и зачем там preg_replace ??? ты ж ничего не заменяешь -
Авг. 1, 2008, 12:19 п.п., спустя 6 минут 13 секунд
<?php
$needle = 3;
$result = null;
$fh = fopen('file.dat', 'r');
if (! $fh) {
echo 'File "file.dat" not found';
}
while (! feof($fh)) {
$str = fgets($fh);
$num = strtok($str, ' ');
if ($num == intval($needle)) {
$result = strtok('#');
break;
}
}
echo $result;
fclose($fh);
?> -
Авг. 1, 2008, 12:22 п.п., спустя 2 минуты 45 секунд
Работает же?!Ну хорошо,можно и так…
$CountA[$qwe]=fgets($fh);
preg_match('|[0-1]+(.*)#|',$CountA[$qwe], $matches);
$CountB[$qwe]=$matches[1];
$qwe++; -
Авг. 1, 2008, 12:24 п.п., спустя 2 минуты 1 секунду
щас придет топикстартер и скажет, что уже сам всё сделал… -
Авг. 1, 2008, 1:21 п.п., спустя 56 минут 53 секунды
Работает же?!
Слышал выражение «гланды через жопу удалять»? -
Авг. 1, 2008, 1:25 п.п., спустя 4 минуты 21 секунду
Подправил немного текстовый файл. Все сделал. Всем спасибо -
Авг. 1, 2008, 1:32 п.п., спустя 6 минут 53 секунды
щас придет топикстартер и скажет, что уже сам всё сделал…
xD -
-
Авг. 1, 2008, 2:54 п.п., спустя 10 минут 28 секунд
бля ну что за люди!!!
Извини конечно,но чем тебе не нравится preg_replace???
Он медленно работает??Или много лишнего кода и "гемороя"???Или еще какие то проблеммы???
он заменяет строку "1 Первая строчка #" на "Первая строчка".
Я понимаю,если бы я написал код на 2 страницы для решения данной проблеммы,это была бы жопа!!!!
А так есть орудие и я вправе им воспользоваться.Кто сказал что preg_replace здесь не подайдет????? -
Авг. 1, 2008, 3 п.п., спустя 5 минут 59 секунд
берешь косу (серп, топор, на твой выбор) и бреешься
у тебя выйдет, может даже также быстро как бритвой
возможно даже лицо не порежешь
так есть орудие и ТЫ вправе им воспользоваться (с) -
Авг. 1, 2008, 3:03 п.п., спустя 2 минуты 51 секунду
че вы ругаетесь?
ТС'у скорее всего это разово нужно, поэтому по части скорости заморачиваться не стоит
че все нервные такие стали?
пойду в админку, посмотрю, как здесь предупредительные баны в голову делать :)все умрут, а я изумруд
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!