Поиск номера строки в файле

Lirck

Новичок
Поиск номера строки в файле

файл test.txt:
1|2|3
11|22|33
111|222|333

нужно узнать номер строки зная число перед первым знаком "|".

например
function search("11") - возвратит "1"(номер строки начинается с 0)
ХЭЛП!

на phpforum.ru не помогли, надежды нет)))))
 

Фанат

oncle terrible
Команда форума
и ты сразу в вопросы по теории программирования отправился?
типа, вопрос не для лохов, тут думать надо?
 

Lirck

Новичок
Поиск номера строки в файле

файл test.txt:
1|2|3
11|22|33
111|222|333

нужно узнать номер строки зная число перед первым знаком "|".

например
function search("11") - возвратит "1"(номер строки начинается с 0)
ХЭЛП!

на phpforum.ru не помогли, надежды нет)))))
 

Фанат

oncle terrible
Команда форума
ппц.
и обязательно надо теперь весь форум зафлудить.

ну и что? У тебя своих идей нету, как сделать?

скажи, если перед тобой положить коробку карандашей, ты сможешь ответить, какой по счету из них зелёный?
 

Lirck

Новичок
есть одна идея, но она не пашет, точнее пашет неправильно

function strfind($search, $filename) {
$file=file($filename);
foreach ($file as $number => $string) {
if (strpos($string, $search) === 0) {
$result = $number;
}
}
return $result;
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Вы уверенны, что нужно хранить номер строки в каждой строке Вашего текстового файле?...
Какого вида будет 10-я строка?
Уж случайно не
1111111111|2|3

Неекономно.
[m]filesystem[/m]

Если вам действительно нужно хранить номер строки в самой строке файла
[m]explode[/m]
[m]count[/m] или [m]strlen[/m]
 

Lirck

Новичок
Mr_Max
нет, это для примера
если десятоя строка будет начинаться с 122323 то:
function search("122323 ") возвратит номер строки (в данном случае - 10)
 

Фанат

oncle terrible
Команда форума
Lirck
ну и как ты эту свою гениальную функцию вызываешь?
 

Фанат

oncle terrible
Команда форума
то есть, в файле, содержащем
1|2|3
11|22|33
111|222|333
ты ищешь строку
"122323 "
?
оригинааааально.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Lirck
Добавьте внутри Вашей поисковой функции функции обработку функцией [m]trim[/m] вашего входного значения.
"122323 " и "122323" не одно и тоже.
 

MegaSin

Новичок
PHP:
function str_n($filename,$search) {
	$file = file($filename);
	$n = 1;
	foreach ($file as $line) {
		$string = explode("|",$line);
		if ($search == $string[0]) {
			return $n;
		}
	$n++;
	}
}
echo str_n("123.txt","111");
работает и ладно...
 

romy4

invoke [brain]
допустим, есть файл, наподобии вашему
1|d954
2|9593
5|969045
99|50054
PHP:
$file="test1.txt";
$findto="969045";
$result=`cat $file | grep -E ".*?\|$findto" | cut -f 1 -d "|"`;
echo $result;
на выходе реультат = 5

-~{}~ 20.05.07 12:53:

это хорошо лишь для больших файлов, так как открытие потока и запуск бинарников занимает тоже время
 
Сверху