Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как определить содержание по номеру строки
 
 автор: Alexn99   (15.05.2006 в 23:13)   письмо автору
 
 

Помогите пожалуйста.
Есть текстовый файл, где в каждой строке сначала оригинальный набор цифер потом текст, нужно найти заданный набор цифер и вывести текст после найденных цифер

   
 
 автор: Саня   (15.05.2006 в 23:18)   письмо автору
 
   для: Alexn99   (15.05.2006 в 23:13)
 

Приведите кусочек вашего файла.

   
 
 автор: Alexn99   (15.05.2006 в 23:23)   письмо автору
 
   для: Саня   (15.05.2006 в 23:18)
 

15 текст1
22 текст2
105 текст3
130 текст4
200 текст5

т.д.
цифры, пробел, текст с пробелами

   
 
 автор: Саня   (15.05.2006 в 23:41)   письмо автору
 
   для: Alexn99   (15.05.2006 в 23:23)
 

-

   
 
 автор: Саня   (15.05.2006 в 23:41)   письмо автору
 
   для: Alexn99   (15.05.2006 в 23:23)
 


<?php
# построчное считывание файла в массив
$content file("file.txt")
# обход массива
foreach ( $content as $val ) {
  
# разбивка строки по пробелу
  
$expld explode(" "$val2);
  
# вывод текста
  
print $expld[1]."<br/>";
}

?>

   
 
 автор: Alexn99   (16.05.2006 в 00:16)   письмо автору
 
   для: Саня   (15.05.2006 в 23:41)
 

$content = file("file.txt") - тут пропущен символ ";" ?

15 пример текста
22 второй пример текста
105 третий пример текста
130 четвертый пример текста
200 пятый пример тескта

пример подробнее - нужно найти строку содержащую "105" и вывести только эту строку без цифер "105", результат поиска и вывода :

третий пример текста

   
 
 автор: ec_stasis   (16.05.2006 в 09:55)   письмо автору
 
   для: 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>';
}

Не проверял, так что может быть придется немного подправить...

   
 
 автор: Alexn99   (16.05.2006 в 11:15)   письмо автору
 
   для: 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 в 12:27)   письмо автору
 
   для: Alexn99   (16.05.2006 в 11:15)
 

-

   
 
 автор: cheops   (16.05.2006 в 13:09)   письмо автору
 
   для: 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 Если что-то вызывает затруднения - пишите - будем разбираться.

   
 
 автор: Alexn99   (16.05.2006 в 14:25)   письмо автору
 
   для: cheops   (16.05.2006 в 13:09)
 

Спасибо, код затруднений не вызвал, хоть и не все до конца понимаю :)

   
 
 автор: ec_stasis   (17.05.2006 в 00:12)   письмо автору
 
   для: Alexn99   (16.05.2006 в 11:15)
 


/^[\d]+\s(.+)$/

Это рег. выражение означает:
^ "в начале строки"
[\d]+ "любая десятичная цифра", + "один или более символов"
\s "любой пробельный символ"
(.+) . "любой символ, кроме перевода строки", + (см. выше), скобки означают, что то, что в них, надо поместить в массив $matches
$ "конец строки"

Вот, надеюсь понятно... Как работает сама ф-ия можно почитать на http://php.net. Впринципе, и что означает это выражение, тоже можно там прочитать...

   
 
 автор: Alexn99   (19.05.2006 в 17:43)   письмо автору
 
   для: ec_stasis   (17.05.2006 в 00:12)
 

Спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования