|
|
|
| Помогите пожалуйста.
Есть текстовый файл, где в каждой строке сначала оригинальный набор цифер потом текст, нужно найти заданный набор цифер и вывести текст после найденных цифер | |
|
|
|
|
|
|
|
для: Alexn99
(15.05.2006 в 23:13)
| | Приведите кусочек вашего файла. | |
|
|
|
|
|
|
|
для: Саня
(15.05.2006 в 23:18)
| | 15 текст1
22 текст2
105 текст3
130 текст4
200 текст5
т.д.
цифры, пробел, текст с пробелами | |
|
|
|
|
|
|
|
для: Alexn99
(15.05.2006 в 23:23)
| | - | |
|
|
|
|
|
|
|
для: Alexn99
(15.05.2006 в 23:23)
| |
<?php
# построчное считывание файла в массив
$content = file("file.txt")
# обход массива
foreach ( $content as $val ) {
# разбивка строки по пробелу
$expld = explode(" ", $val, 2);
# вывод текста
print $expld[1]."<br/>";
}
?>
|
| |
|
|
|
|
|
|
|
для: Саня
(15.05.2006 в 23:41)
| | $content = file("file.txt") - тут пропущен символ ";" ?
15 пример текста
22 второй пример текста
105 третий пример текста
130 четвертый пример текста
200 пятый пример тескта
пример подробнее - нужно найти строку содержащую "105" и вывести только эту строку без цифер "105", результат поиска и вывода :
третий пример текста | |
|
|
|
|
|
|
|
для: Alexn99
(16.05.2006 в 00:16)
| |
<?php
$strings = file('file.txt');
foreach($strings as $v) {
preg_match("/^[\d]+\s(.+)$/", $v, $matches);
echo $matches[1].'<BR>';
}
|
Не проверял, так что может быть придется немного подправить... | |
|
|
|
|
|
|
|
для: ec_stasis
(16.05.2006 в 09:55)
| | Большое человеческое спасибо всем кто помогал!
Мне нужно было что бы выводилась одна строка, вот что у меня получчилось с вашей помощью:
<?php
$q = 105;
$strings = file('file.txt');
foreach($strings as $v) {
preg_match("/^[\d]+\s(.+)$/", $v, $matches); // понять бы что эта строка делает :)
if($matches[0] == $q)
{
print $matches[1];
}
else
{
}
}
?>
|
содержание file.txt:
15 пример текста
22 второй пример текста
105 третий пример текста
130 четвертый пример текста
200 пятый пример тескта
|
вывод:
третий пример текста
!!! Если есть варианты пишите, только с подробными комментариями пожалуйста, ведь я только учусь... | |
|
|
|
|
|
|
|
для: Alexn99
(16.05.2006 в 11:15)
| | - | |
|
|
|
|
|
|
|
для: Alexn99
(16.05.2006 в 11:15)
| | Не очень эффективно перебирать каждую строку файла, лучше прочитать его содержимое в одну строку и при помощи регулярного выражения сразу получить ответ (уникальный номер нам известен).
<?php
$q = 105;
// Извлекаем содержимое файла
$contents = file_get_contents('file.txt');
// Формируем регулярное выражение
$pattern = "|".$q."[\s]+([^\n]+)|is";
preg_match($pattern, $contents, $matches);
echo $matches[1];
?>
|
PS Если что-то вызывает затруднения - пишите - будем разбираться. | |
|
|
|
|
|
|
|
для: cheops
(16.05.2006 в 13:09)
| | Спасибо, код затруднений не вызвал, хоть и не все до конца понимаю :) | |
|
|
|
|
|
|
|
для: Alexn99
(16.05.2006 в 11:15)
| |
Это рег. выражение означает:
^ "в начале строки"
[\d]+ "любая десятичная цифра", + "один или более символов"
\s "любой пробельный символ"
(.+) . "любой символ, кроме перевода строки", + (см. выше), скобки означают, что то, что в них, надо поместить в массив $matches
$ "конец строки"
Вот, надеюсь понятно... Как работает сама ф-ия можно почитать на http://php.net. Впринципе, и что означает это выражение, тоже можно там прочитать... | |
|
|
|
|
|
|
|
для: ec_stasis
(17.05.2006 в 00:12)
| | Спасибо! | |
|
|
|