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.SU

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


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

> Описание: и втулить логич. операторы для полнотекстового поиска
Viper
Отправлено: 15 Декабря, 2009 - 10:58:42
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Собственно делаю полнотекстовый поиск по сайту. Так как для меня это ещё в новинку, то есть пару вопросов.

есть строка поиска "вазелин в холодильнике по 3,50 грн"

далее получаем строку из $_POST, режем её до 30 символов
PHP:
скопировать код в буфер обмена
  1. $limited_search = substr($searchword, 0, 30);

удаляем все html-теги
PHP:
скопировать код в буфер обмена
  1. $striped = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $limited_search);

и далее затык.

Нужно чтобы в строке в запросе присутствовали знак * после (к примеру) 10 символов и после него пробел и знак ~ т.е все должно выглядеть примерно так
CODE (text):
скопировать код в буфер обмена
  1. SELECT `id`, `type`, `name`, `year`,
  2. MATCH (`type`, `name`) AGAINST ('вазелин в * ~холодильнике по 3,50 грн' IN BOOLEAN MODE) AS rel
  3. FROM `refrigerators`
  4. WHERE MATCH (`type`, `name`) AGAINST ('вазелин в * ~холодильнике по 3,50 грн' IN BOOLEAN MODE)
  5. ORDER BY rel ASC


вот не уверен в верности строки. т.е. если оператор попадает не на границу слова а на пробел, что будет? может у кого есть мысли по этому поводу?

PS! Инфу в инете читал. Конкретного очень мало и без примеров.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Viper
Отправлено: 16 Декабря, 2009 - 14:30:03
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




//$string = 'бобик в гостях у барбоса';
//$string = 'бобиквгостяхубарбоса';
//$string = '12 столов';
//$string = '2023';
$string = 'я знаю что вы сделали прошлым летом';

PHP:
скопировать код в буфер обмена
  1. if (strpos($striped, ' ') === false) { // if space not found in string
  2.         if (is_numeric($striped) && strlen($striped) <= 4) {
  3.                 $part = $striped.'*';
  4.         } else {
  5.                 $part = substr($striped, 0, strlen($striped)).'*';
  6.         }
  7. } else {
  8.         if (strlen($striped) <= 4 && is_numeric($striped)) {
  9.                 $part = substr($striped, 0, strpos($striped, ' ')).'*';
  10.         } else {
  11.                 $part_temp = substr($striped, 0, strpos($striped, ' '));
  12.                 if (is_numeric($part_temp) && strlen($part_temp) <= 2) {
  13.                         $part = substr($striped, 0, strlen($part_temp) + 3).'*';
  14.                 } else {
  15.                         if (strlen($part_temp) <= 2) {
  16.                                 $part = substr($striped, 0, round(strlen($striped) / 2)).'* ~'.substr($striped, round(strlen($striped) / 2), strlen($striped));
  17.                         } else {
  18.                                 $part = substr($striped, 0, strpos($striped, ' ')).'* ~'.substr($striped, strpos($striped, ' ')+1, strlen($striped));
  19.                         }
  20.                 }
  21.         }
  22. }


примерно вот так решил сделать.

для последнего $string операторы вставляются в середину строки.

и удаление html сделал как
PHP:
скопировать код в буфер обмена
  1. $striped = preg_replace('/<(.*?)>/', '', $limited_search);


а удаление множественных пробелов как

(Отредактировано автором: 16 Декабря, 2009 - 14:33:01)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB