Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Код php отрабатывает не полностью

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
IvanBr
Отправлено: 09 Февраля, 2017 - 12:47:32
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Есть такой код для поиска содержимого одной из строк файла index.txt. Но он работает только когда во второй строке $index=''; не подставлено никакого значения. Если например подставить 2 или 4, то код не отрабатывает - пишет Позиция не найдена. В чем причина? Заранее спасибо.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $index='';  //ищем строку с индексом
  3. $filename="index.txt";   //имя файла  
  4. $fd=fopen($filename, "r");   //открываем файл для чтения
  5. $bufer=fread($fd, filesize($filename));  //читаем содержимое файла
  6. fclose($fd);  //закрываем файл  
  7. preg_match("|$index([^\n]*)|", $bufer, $matches);   //находим строку с индексом $index
  8. //выводим результат
  9. if(isset($matches[1]))
  10. echo $matches[1]; else echo "Позиция не найдена"                   
  11. ?>
 
 Top
andrewkard
Отправлено: 09 Февраля, 2017 - 14:55:32
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




IvanBr пишет:
В чем причина?

напишите пример того, что ищете и часть содержимого файла, где эта строка есть
 
 Top
haveFun
Отправлено: 09 Февраля, 2017 - 15:31:21
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




https://regex101[dot]com/
проблема очевидно в регулярке
 
 Top
IvanBr
Отправлено: 09 Февраля, 2017 - 17:37:35
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




andrewkard пишет:
IvanBr пишет:
В чем причина?

напишите пример того, что ищете и часть содержимого файла, где эта строка есть


Вот текстовый файл index.txt чтобы тестировать этот код. Если во вторую строку кода $index=''; не ставить никакого значения, то код после работы отображает первую строку этого ТХТ файла, то есть Ваза под цветы. Если в $index=''; к примеру подставить 2, вот так $index='2'; то после работы кода выводится "Позиция не найдена"

Файл index.txt:

Ваза под цветы.
Красивая ваза для цветов.
Ваза цветов.
Пластиковая ваза для цветов.
Ваза цветы.
Рисунки ваза с цветами.
Ваза с цветами фото.
Висячая ваза для цветов.
Висячая ваза для цветов.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Февраля, 2017 - 17:40:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А почему должна быть найдена? В вашем примере данных не встречается подстроки 2.


-----
PostgreSQL DBA
 
 Top
IvanBr
Отправлено: 09 Февраля, 2017 - 17:48:09
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Мелкий пишет:
А почему должна быть найдена? В вашем примере данных не встречается подстроки 2.


Как раз чтобы узнать это я и создал тему. Подскажите, пожалуйста, если не трудно, как сделать так, чтобы можно было бы доставать каждую строку. Спасибо.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Февраля, 2017 - 18:02:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Вы написали, судя по реально написанному коду, рабочий поиск определённого текста по текстовому файлу.
В комментариях и в теме вы говорите про какой-то индекс строки, как будто хотели написать проверку существования строки с таким-то порядковым номером от начала файла.

Поиск по текста и вывод строки по её номеру - задачи разные, поэтому чтобы сказать, что сделано не так, сначала надо понять, а что именно вы сделать хотели.


-----
PostgreSQL DBA
 
 Top
IvanBr
Отправлено: 09 Февраля, 2017 - 18:20:02
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Мелкий пишет:
Вы написали, судя по реально написанному коду, рабочий поиск определённого текста по текстовому файлу.
В комментариях и в теме вы говорите про какой-то индекс строки, как будто хотели написать проверку существования строки с таким-то порядковым номером от начала файла.

Поиск по текста и вывод строки по её номеру - задачи разные, поэтому чтобы сказать, что сделано не так, сначала надо понять, а что именно вы сделать хотели.




Спасибо за участие в теме. Просто нашел этот код в свободном доступе здесь https://sevidi[dot]ru/php/phppage35.php

Автор пишет:

" Каждому номеру, который обычно называют индексом, соответствует строка, называемая значением. Одной из насущных задач является определение наличия в файле заданного индекса и вывод соответствующего ему значения, если такой индекс существует"

То есть как я понимаю, данный код вытягивает содержимое каждой строки ТХТ файла.
А это мне как раз и надо. Попробовал протестить код и не получилось, решил написать специалистам. Я новичок и прошу строго не судить. А если у знающих людей возникнет желание помочь новичку, то буду очень признателен и благодарен.
 
 Top
teleoperator27
Отправлено: 09 Февраля, 2017 - 19:13:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


Помог: 21 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. $file = file("index.txt"); //читаем файл и помещаем содержимое в массив $file
  4.  
  5. echo '<i>Строка с индексом 2 содержит текст:</i>  ' . $file[2];  //вывод из массива $file по индексу 2
  6.  
  7. echo '<hr>';
  8.  
  9. $max = count($file); //считаем кол - во элемента в массиве $file
  10.  
  11. echo  '<i>Это случайная строка:</i>  ' . $file[rand(0, $max)]; //Вывод случайного элемента из массива $file
  12.  
  13.  
  14. ?>

файл index.txt
Спойлер (Отобразить)

(Отредактировано автором: 09 Февраля, 2017 - 19:14:29)

 
My status
 Top
IvanBr
Отправлено: 09 Февраля, 2017 - 19:35:42
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




teleoperator27 пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. $file = file("index.txt"); //читаем файл и помещаем содержимое в массив $file
  4.  
  5. echo '<i>Строка с индексом 2 содержит текст:</i>  ' . $file[2];  //вывод из массива $file по индексу 2
  6.  
  7. echo '<hr>';
  8.  
  9. $max = count($file); //считаем кол - во элемента в массиве $file
  10.  
  11. echo  '<i>Это случайная строка:</i>  ' . $file[rand(0, $max)]; //Вывод случайного элемента из массива $file
  12.  
  13.  
  14. ?>

файл index.txt
Спойлер (Отобразить)


teleoperator27 Большое Вам человеческое спасибо. Мне хватило бы и первых 6-ти строк, это как раз то, что мне было нужно. Еще раз огромное спасибо и удачи Вам!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB