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 :: Отображение результатов поиска по сайту
Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011
Помог: 10 раз(а)
Привет всем! Я использую готовый движок для своего сайта. Модуль поиска по сайту в комплекте уже есть. Ищет хорошо, но результат отображается с помощью:
Проблема в том, что ключевое слово не всегда оказывается в указанном пределе количества отображаемых символов, те в пределе 0-500 не попадает, а 0-1000 попадает.
Какая функция и как её задать может показывать именно тот кусок текста в котором находится ключевое слово (как в гугл и тд )?
Если нет времени вникать, то, пожалуйста, приведите какие-нибудь примеры
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
strpos() - возвращает позицию символа/строки. strlen() - можно взять её длину substr() - берёт часть строки
Несложными математическими операциями можно взять искомое словов перед которым будет 50 символо и после него тоже 50.
$str - строка в которой ищем $search_word - слово которое ищем
Писал по быстрому поэтому могут быть ошибки. Главное понять суть
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
vsll
Отправлено: 26 Февраля, 2011 - 19:06:21
Частый посетитель
Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011
Помог: 10 раз(а)
Спасибо, попробую
vsll
Отправлено: 26 Февраля, 2011 - 21:06:32
Частый посетитель
Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011
Помог: 10 раз(а)
Не получается, модуль работает по принципу индексации страниц и встретив ключевое слово, выдаёт ссылку на саму страницу и по желанию: либо весь текст, либо кусок текста, а как задать строку в которой находиться ключевое слово, не понятно, по крайней мере мне, пока вот, что получается на данный момент:
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
Vasiliya
Ну все хочется красиво и удобно и просто)))
Есть такая штука:
preg_match_all - вот с ней очень удобно будет выдрать ту самую нужную часть
vsll
Отправлено: 26 Февраля, 2011 - 21:22:53
Частый посетитель
Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011
Помог: 10 раз(а)
preg_match_all
Именно по этой штуке я к вам из гугла и попала, а как её задать не знаю, в одном скрипте какогото freeware поисковика видела ещё и вот такое str_replace. Что там нужно в скобках писать? извините за тупой вопрос.
ALEN
Отправлено: 26 Февраля, 2011 - 21:24:06
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
Vasiliya
Ну для начала советую прочесть про эти функции и понять для чего они, а потом уже применять
vsll
Отправлено: 26 Февраля, 2011 - 21:44:15
Частый посетитель
Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011
Помог: 10 раз(а)
Завтра попробую, может до завтра кто-нибудь найдётся с подобной и уже решённой проблемой, если что, ссылка на описание функции http://php.su/functions/?preg_match
ALEN
Отправлено: 26 Февраля, 2011 - 21:46:31
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
$string="Нарушения целости кожных покровов, слизистых оболочек и поверхности внутренних органов, происходящие в результате механического или иного воздействия, называются раной. Повреждение кожных покровов обычно сопровожден нарушением целости и более глубоко расположенных тканей. Полость, образовавшаяся между тканями в результате проникновения ранящего предмета в глубину тела, называется раневым каналом. В зависимости от характера ранящего предмета различают колотые, резаные, рубленые, ушибленные, рваные, огнестрельные, укушенные раны. Чем острее предмет и чем быстрее наносится повреждение, тем меньше повреждены края раны. По степени повреждения раны делятся на поверхностные и глубокие. Глубокие раны могут сопровождаться повреждением сосудов, нервов, костей, сухожилий, внутренних органов. Глубокие раны, проникающие в полость (брюшная, грудная, череп), называются проникающими. Все остальные виды ран независимо от их глубины называются непроникающими.";
Но тут еще для рабочего варианта нужно много проверок сделать и т.д. и т.п.
vsll
Отправлено: 27 Февраля, 2011 - 20:47:11
Частый посетитель
Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011
Помог: 10 раз(а)
Oh my God! А вы наверное хирург по совместительству. Я не понимаю как задать это регулярное выражение - шаблон, вчера пробовала какойто делиметер неизвестный короче и всё, я не программист даже по совместительству и вся эта терминология для меня как традиционный китайский
Ну вот, например,
Выдаёт фрагмент с первой попавшейся поисковой фразы и последующие за ней 500 символов. ALEN А как с preg_match_all всё это сделать, так и не догнала, если не сложно напиши пару строчек на эту тему
ALEN
Отправлено: 01 Марта, 2011 - 20:59:02
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.