Подскажите пожалуйста по PHP

S1
На сайте с 19.12.2008
Offline
24
620

Есть файл ff.txt , состоящий из

file file1 2 file2 5 file3 6

sfile sfile1 7 sfile2 3 sfile3 8

Как мне найти в нем , например , file2 , отобразить стоящую за ним цифру и первое значение (file) ?

Утечки - Секретные материалы и интересные факты от безумного шпиона (http://www.leaks.ru/)
Dweep
На сайте с 11.12.2006
Offline
207
#1
sergun_123:
Есть файл ff.txt , состоящий из

file file1 2 file2 5 file3 6
sfile sfile1 7 sfile2 3 sfile3 8

Как мне найти в нем , например , file2 , отобразить стоящую за ним цифру и первое значение (file) ?

$html = file_get_contents("ff.txt");
preg_match('#file2 ([\d])#', $html, $res);
echo $res[1];

Это про цифру. Что такое первое значение (file) - не осилил понять

S1
На сайте с 19.12.2008
Offline
24
#2

Мне нужно чтобы отображалась цифра после искомого слова , а так же первое слово в строке, в данном случае file .

sergun_123 добавил 01.06.2009 в 13:25

Пример не работает

sergun_123 добавил 01.06.2009 в 13:46

А нет работает. Но все же как вывести первое слово в строке в которой была найдено искомое ?

HC
На сайте с 24.05.2009
Offline
1
#3

А если так?


<?php
$search_template = 'sfile2';
$line_endings = "\r\n";
$file = 'file.txt';
$file_pattern = 'a-zA-Z0-9_';
//
$is_found = false;
$lines = explode($line_endings, file_get_contents($file));
foreach($lines as $line) {
if(preg_match("/".$search_template."\s+(\d+)/", $line, $matches)) {
$number = $matches[1];
preg_match("/^([".$file_pattern."]+)\s+/", $line, $matches);
$word = $matches[1];
$is_found = true;
break;
}
}
if($is_found) {
print $number . "<br />" . $word . "<br />";
} else {
print "Not found!<br />";
}
?>

S1
На сайте с 19.12.2008
Offline
24
#4

Число отображается правильно , а вот первое слово в строке нет . Ведь в данном случае если ищется sfile2 должно отобразится sfile , а отображается file . Помогите исправить .

sergun_123 добавил 02.06.2009 в 07:35

Спасибо все вроде заработало.

dvaes
На сайте с 03.09.2007
Offline
65
#5


<?php
$find = "file2";
$file = file("file.txt");
foreach($file as $str)
if(preg_match("'^(\w+).*\s+".$find."\s+(\d+)'i", $str, $finded))
break;
//$finded[1] - начало строки
//$finded[2] - цифра после строки поиска
?>

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

S1
На сайте с 19.12.2008
Offline
24
#6

Спасибо , работает .

S1
На сайте с 19.12.2008
Offline
24
#7

Удалите тему.

[Удален]
#8

Здесь никто темы не удаляет, расслабьтесь.

S1
На сайте с 19.12.2008
Offline
24
#9

Как же расслабьтесь , за то что создал эту тему и еще похожую , меня опустили в минус . Якобы нарушил правила 1.2 . А почему я не понял .

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий