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 :: Аналог sql ф-ции against в php

 PHP.SU

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


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

> Без описания
vitaly63
Отправлено: 04 Декабря, 2012 - 17:21:21
Post Id


Новичок


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


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




Доброго времени суток, возник такой вопрос, а есть ли какой нибудь аналог sql функции against. Т.е. поиск по тексту должен осуществляться точно так же как например поиск по таблице функцией against.
SQL:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT id, text
  3. FROM table1
  4. WHERE MATCH (text) AGAINST ('"get text help film"' IN BOOLEAN MODE)
  5. LIMIT 0, 10
  6.  

Примерный вывод:
1)
id => '3'
text => 'get this first text. Need help, this film'
2)
id => '45'
text => 'get this film. Need text, this film, please help)'

Что надо: Поиск php ищет такие же совпадения только в php файле с массивами и выводит тоже самое

(Отредактировано автором: 04 Декабря, 2012 - 17:25:24)

 
 Top
KingStar
Отправлено: 04 Декабря, 2012 - 18:40:58
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


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




есть, а еще и ключи можно создавать Язычок даже если изобретешь велосипед - он в разы будет медленнее ездить Хм


-----
То что программа работает, не означает что она написана правильно!
 
 Top
vitaly63
Отправлено: 04 Декабря, 2012 - 18:53:08
Post Id


Новичок


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


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




KingStar это понятно, но просто хотелось бы аналог, да и что бы ездил с такой же скоростью)
 
 Top
vitaly63
Отправлено: 05 Декабря, 2012 - 11:20:38
Post Id


Новичок


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


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




Вот например пример:
PHP:
скопировать код в буфер обмена
  1. $page = 'This is a test the old shocl';
  2. $word = array('test', 'is', 'old', 'qwerew');
  3. $matches = array();
  4. $count_words = preg_match_all('/(?:'.implode('|',$word).')/i', $page, $matches);
  5. print_r($matches);

выводит:
PHP:
скопировать код в буфер обмена
  1. Array ( [0] => Array ( [0] => is [1] => is [2] => test [3] => old ) )

но нужно что бы он выводил false. А при таком значении $word :

выводил бы true. Т.е. нужен поиск по тегам, но с точными совпадениями в тексте, расположение тегов в $word не должно влиять на расположение похожих слов в тексте.
 
 Top
DlTA
Отправлено: 05 Декабря, 2012 - 11:27:54
Post Id



Постоянный участник


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


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




vitaly63 пишет:
/(?:'.implode('|',$word).')/i

/\b(?:'.implode('|',$word).')\b/i
 
 Top
vitaly63
Отправлено: 05 Декабря, 2012 - 12:34:58
Post Id


Новичок


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


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




DlTA да поиск стал более точным но это не решает проблему не существующего тега
 
 Top
KingStar
Отправлено: 05 Декабря, 2012 - 15:07:41
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


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




может так Растерялся

PHP:
скопировать код в буфер обмена
  1. function inarray($page)
  2. {
  3.         $word = array('test', 'is', 'old', 'qwerew');
  4.         if(in_array($page, $word)) return $page;
  5. }
  6.  
  7. $page = explode(' ', 'This is a test the old shocl');
  8. $array = array_diff(array_map("inarray", $page), array(''));
  9.  
  10. var_dump($array);


-----
То что программа работает, не означает что она написана правильно!
 
 Top
DlTA
Отправлено: 05 Декабря, 2012 - 15:14:41
Post Id



Постоянный участник


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


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




vitaly63 пишет:
не решает проблему не существующего тега
а можно суть проблемы, и желательно без очепяток, а то я так и не понял сути
 
 Top
caballero
Отправлено: 05 Декабря, 2012 - 15:28:42
Post Id


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


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


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




against - функци=ия полноекстового поиска работающая по полнотекстовому индексу.
вряд ли ее можно заменить в PHP какой нибудь регуляркой


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
vitaly63
Отправлено: 05 Декабря, 2012 - 16:09:32
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. $page = 'This is a test the old school';
  2. $word = array('test', 'is', 'old','dfsfsdfwe');
  3. $matches = array();
  4. $count_words = preg_match_all('/(?:'.implode('|',$word).')/i', $page, $matches);
  5. $ar_dif = array_diff($word, $matches[0]);
  6. $result = (count($ar_dif) != 0) ? 'true': 'false';
  7.  

(Отредактировано автором: 05 Декабря, 2012 - 16:19:22)

 
 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