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

  • Автор темы Автор темы Lirck
  • Дата начала Дата начала

Lirck

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

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

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

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

на phpforum.ru не помогли, надежды нет)))))
 
и ты сразу в вопросы по теории программирования отправился?
типа, вопрос не для лохов, тут думать надо?
 
Поиск номера строки в файле

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

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

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

на phpforum.ru не помогли, надежды нет)))))
 
ппц.
и обязательно надо теперь весь форум зафлудить.

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

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

function strfind($search, $filename) {
$file=file($filename);
foreach ($file as $number => $string) {
if (strpos($string, $search) === 0) {
$result = $number;
}
}
return $result;
 
Вы уверенны, что нужно хранить номер строки в каждой строке Вашего текстового файле?...
Какого вида будет 10-я строка?
Уж случайно не
1111111111|2|3

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

Если вам действительно нужно хранить номер строки в самой строке файла
[m]explode[/m]
[m]count[/m] или [m]strlen[/m]
 
Mr_Max
нет, это для примера
если десятоя строка будет начинаться с 122323 то:
function search("122323 ") возвратит номер строки (в данном случае - 10)
 
Lirck
ну и как ты эту свою гениальную функцию вызываешь?
 
то есть, в файле, содержащем
1|2|3
11|22|33
111|222|333
ты ищешь строку
"122323 "
?
оригинааааально.
 
Lirck
Добавьте внутри Вашей поисковой функции функции обработку функцией [m]trim[/m] вашего входного значения.
"122323 " и "122323" не одно и тоже.
 
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");

работает и ладно...
 
допустим, есть файл, наподобии вашему
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:

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