Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
1

Как реализовать поиск на php

19.02.2014, 17:57. Показов 2174. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ подскажите с чего начать что бы реализовать поиск файлов Дело в том что я не могу использовать mysql или другу БД поэтому суть в том что у меня есть куча файлов в папке допустим все он TXT формата как сделать поиск что бы php выводил их на страницу в виде ссылок. Я просто даже не знаю с чего начать.

Добавлено через 1 минуту
если есть добряки приму уже готовый код))) ну или хотя бы намете мне план действий а то я уже делал но не туда ничего не работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2014, 17:57
Ответы с готовыми решениями:

Кто может реализовать нечеткий поиск по сайту, на языке PHP?
...

Нужно реализовать поиск папок не имеющих index.html(.php) на сайте
function open_dir($name){ $open = opendir($name); $info = NULL; while($data = readdir($open)){...

Как реализовать на php
Здравствуйте! Как можно реализовать следующее на php или другом языке? - На ФТП сервере есть...

Как связать и реализовать PHP и БД
Нужно чтобы бралось из БД значение и если к нему прибавляется +1, то в другую ячейку БД добавлялась...

28
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
19.02.2014, 19:43 2
Лучший ответ Сообщение было отмечено outZoNe как решение

Решение

Не понял одного момента - искать надо в файлах или сами файлы.
Если сами файлы, то открываешь папку и сравниваешь имена файлов с введенным значением в поле, например.
Если надо искать внутри файлов, думаю надо воспользоваться ф-ей preg_match
Допустим это поисковое поле
HTML5
1
<input type="text" name="search" /><br /><input type="text" name="submit" />
Обработчик
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Решение для 1-го варианта
if (isset($_POST['submit']))
{
   if (empty($_POST['search']) || mb_strlen(trim($_POST['search']), 'UTF-8') < 4) {
       echo 'Поисковое слово слишком короткое';
   } else {
       // Получаем содержимое папки. Если есть вложенные папки, то используй рекурсию
       $dir = scandir('папка/');
       unset($dir[0], $dir[1]);
 
       // Пробегаем по файлам
       foreach ($dir as $file) {
           if (basename($file) == trim($_POST['search']) 
               echo '<a href="#">'.$file.'</a>'.PHP_EOL;
       }
   }
}
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
21.02.2014, 15:40  [ТС] 3
Love_and_Peace, Простите, все работает как надо только как сделать что бы выводилась ссылка на файл а то в этом варианте что то не работает
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
21.02.2014, 18:16 4
Лучший ответ Сообщение было отмечено outZoNe как решение

Решение

нужно в атрибуте href прописать путь к файлу.
Вот здесь
PHP
1
2
if (basename($file) == trim($_POST['search']) 
    echo '<a href="папка/'.$file.'">'.$file.'</a>'.PHP_EOL;
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
21.02.2014, 18:30  [ТС] 5
Parse error: syntax error, unexpected T_ECHO in /home/u327343580/public_html/files/2.php on line 14

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if (isset($_POST['submit']))
{
   if (empty($_POST['search']) || mb_strlen(trim($_POST['search']), 'UTF-8') < 4) {
       echo 'Поисковое слово слишком короткое';
   } else {
       // Получаем содержимое папки. Если есть вложенные папки, то используй рекурсию
       $dir = scandir('qwerty/');
       unset($dir[0], $dir[1]);
 
       // Пробегаем по файлам
       foreach ($dir as $file) {
          if (basename($file) == trim($_POST['search']) 
    echo '<a href="qwerty/'.$file.'">'.$file.'</a>'.PHP_EOL;
 
       }
   }
}
?>
Вот я сделал но теперь выскакивает такая вот ошибка.

Добавлено через 1 минуту
суть в том что я сделал с 1.php переадресация на переработчик 2.php может это не катит так делать вот что у меня в 1.php
HTML5
1
2
3
<form method="POST" action="2.php">
<input type="text" name="submit" /><br>
<input type="submit" name="submit" />
Добавлено через 9 минут
Love_and_Peace, и что делает это "PHP_EOL" это константа только я не понял для чего она)))
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
21.02.2014, 19:10 6
Цитата Сообщение от outZoNe Посмотреть сообщение
Parse error: syntax error, unexpected T_ECHO in /home/u327343580/public_html/files/2.php on line 14
скобка не закрыта в условии
Цитата Сообщение от outZoNe Посмотреть сообщение
if (basename($file) == trim($_POST['search'])
добавь закрывающую скобку.
Цитата Сообщение от outZoNe Посмотреть сообщение
что делает это "PHP_EOL"
это как-бе <br /> или "\n". Встроенная константа
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
21.02.2014, 19:24  [ТС] 7
Love_and_Peace, Почему он теперь всегда выдает "Поисковое слово слишком короткое" Я пробовал менять 'UTF-8') < 4) на 'UTF-8') < 0) и 'UTF-8') < 1) все равно всегда одно и тоже

Добавлено через 1 минуту
Ищу файлы на английском языке названия ввожу без пробелов
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
21.02.2014, 20:13 8
возможно у тя скрипты не в кодировке ютф, попробуй вместо mb_strlen просто strlen, и без 'UTF-8'
PHP
1
if (empty($_POST['search']) || strlen(trim($_POST['search'])) < 4)
Добавлено через 1 минуту
или так
PHP
1
if (trim($_POST['search']) == '' || strlen($_POST['search']) < 4)
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
21.02.2014, 21:19  [ТС] 9
Love_and_Peace, Он почему то опять пишет "Поисковое слово слишком короткое" Я пробовал по разном все равно одинаковый резульат
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
21.02.2014, 22:27 10
эмм.. хз, вроде должен работать..
может просто поменять местами условия, сначала проверка на true, потом - false.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
if (trim($_POST['search']) != '' && strlen($_POST['search']) >= 4)
{
   $dir = scandir('qwerty/');
       unset($dir[0], $dir[1]);
 
    // Пробегаем по файлам
    foreach ($dir as $file) {
          if (basename($file) == trim($_POST['search']) 
    echo '<a href="qwerty/'.$file.'">'.$file.'</a>'.PHP_EOL;
} else {
   echo 'Поисковое слово слишком короткое';
}
думаю так должно сработать
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
22.02.2014, 17:20  [ТС] 11
Love_and_Peace, Parse error: syntax error, unexpected T_ELSE in /home/u327343580/public_html/get/2.php on line 12 странно

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<meta http-equiv="Content-type" content="text/html; utf-8" /></head>
<?php
if (trim($_POST['search']) != '' && strlen($_POST['search']) >= 4)
{
   $dir = scandir('qwerty/');
       unset($dir[0], $dir[1]);
 
    // Пробегаем по файлам
    foreach ($dir as $file) {
          if (basename($file) == trim($_POST['search']))
    echo '<a href="qwerty/'.$file.'">'.$file.'</a>'.PHP_EOL;
} else { <-- вот на это строчку он почему то теперь ругается 
   echo 'Поисковое слово слишком короткое';
}
?>
он на строчку 12 ругается вот так "Parse error: syntax error, unexpected T_ELSE in /home/u327343580/public_html/get/2.php on line 12"

Добавлено через 7 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<meta http-equiv="Content-type" content="text/html; utf-8" /></head>
<?php
if (trim($_POST['search']) != '' && strlen($_POST['search']) >= 4)
{
   $dir = scandir('qwerty/');
       unset($dir[0], $dir[1]);
 
    // Пробегаем по файлам
    foreach ($dir as $file) {
          if (basename($file) == trim($_POST['search']))
    echo '<a href="qwerty/'.$file.'">'.$file.'</a>'.PHP_EOL;
} else { <-- вот на эту строчку я так понял он ругается может опять что то не закрыто
   echo 'Поисковое слово слишком короткое';
}
?>
хотя я вот тут добавил ")" вроде как не хаватало
PHP
1
  if (basename($file) == trim($_POST['search']))
но он все равно что то ругается

вот так "Parse error: syntax error, unexpected T_ELSE in /home/u327343580/public_html/get/2.php on line 12"

Добавлено через 52 минуты
Косяк))
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
23.02.2014, 02:44 12
а.., у тя фигурная скобка от цикла не закрыта, у foreach. Синтаксическую ошибку поймать проще простого, особенно если скрипт жалуется на такие места, просто сосчитай кол-во откр-ся и закр-ся скобок, они должны быть равны
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
23.02.2014, 11:28  [ТС] 13
Love_and_Peace, ахахха жесть спасибо ппц я не спалил))

Добавлено через 6 минут
Блин он опять пишет поисковое слово слишком короткое. Чувак короче если я тебя уже слшком запарил можешь не напрягаться я че нибудь другое придумаю.
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
23.02.2014, 15:16 14
outZoNe, посмотри что возвращает
PHP
1
strlen($_POST['search'])
. Если срабатывает нормально, то хз, иначе, используй другую ф-ю (для UTF-8)
PHP
1
mb_strlen($_POST['search'], 'UTF-8')
. Просто я смотрю у тя кодировка в ютф'е, проверь, чтобы кодировка самих файлов тоже была в ютф без BOM
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
24.02.2014, 15:40  [ТС] 15
Love_and_Peace, А если это не только txt а например png

Добавлено через 2 минуты
Он все равно моросит что слишком короткий
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
24.02.2014, 16:37 16
Цитата Сообщение от outZoNe Посмотреть сообщение
А если это не только txt а например png
без разницы, мы берем название файла в папке и сверяем с тем, что ввели в поле.
Цитата Сообщение от outZoNe Посмотреть сообщение
Он все равно моросит что слишком короткий
попробуй пока без измерения длины)
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
24.02.2014, 17:20  [ТС] 17
ахаххаха он все равно говорить что "Поисковое слово слишком короткое"
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
24.02.2014, 18:14 18
)) я кажется понял, ты писал, что разделил код на 2 файла, по-моему второй не видит значение из первого, где находится форма. В форме есть атрибут action с указанием пути ко второму файлу?
1
8 / 5 / 4
Регистрация: 18.02.2014
Сообщений: 409
24.02.2014, 18:24  [ТС] 19
Ну у меня два файла в одной папке 1.php И 2.php в 1.php вот такой код:
HTML5
1
2
3
4
<meta http-equiv="Content-type" content="text/html; utf-8" /></head>
<form method="POST" action="2.php">
<input type="text" name="submit" /><br>
<input type="submit" name="submit" />
в 2.php вот такой код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<meta http-equiv="Content-type" content="text/html; utf-8" /></head>
<?php
if (trim($_POST['search']) != '' && mb_strlen($_POST['search'], 'UTF-8'))
{
   $dir = scandir('qwerty/');
       unset($dir[0], $dir[1]);
 
    // Пробегаем по файлам
    foreach ($dir as $file) {
          if (basename($file) == trim($_POST['search']))
    echo '<a href="qwerty/'.$file.'">'.$file.'</a>'.PHP_EOL;
}
}
else 
{
   echo 'Поисковое слово слишком короткое';
}
 
?>
оба файла в одной папке
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
24.02.2014, 18:31 20
У тя форма не закрыта. И убери meta-заголовки во втором файле + проверь кодировку самих файлов. Если используешь mb_strlen, то должна быть utf-8 без BOM
1
24.02.2014, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2014, 18:31
Помогаю со студенческими работами здесь

Как реализовать tail -f на php
система windows xp, пишутся логи file.log хочу под open server сделать вэб-приложение надо в...

1C + PHP: Как реализовать связь?
Привет всем. Нуждаюсь в вашей помощи. Есть такая задача, нужно чтоб на сайт написанный на php...

Как реализовать поиск
Подскажите пожалуйста, как реализовать поиск по таким данным &lt;?php if(get_post_meta($post-&gt;ID,...

Как реализовать поиск по БД?
есть на странице поле для ввода текста и кнопка submit,в поле вводим(например) имя товара ну и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru