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
Форумы портала PHP.SU :: Версия для печати :: регулярка
Форумы портала PHP.SU » PHP » Регулярные выражения » регулярка

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

1. LIME - 03 Июля, 2011 - 15:10:14 - перейти к сообщению
как запрос доработать чтоб рядом букв и цифр со словом не стояло?
ато находит если и в середине слова комбинация букв встречается

$query="SELECT NAME,TEXT FROM `marketing` WHERE `TEXT` LIKE '%".$wrd."%'";
2. OrmaJever - 03 Июля, 2011 - 16:20:45 - перейти к сообщению
а пробелы поставить пробовали? Растерялся
PHP:
скопировать код в буфер обмена
  1. $query="SELECT NAME,TEXT FROM `marketing` WHERE `TEXT` LIKE '% ".$wrd." %'";
3. LIME - 03 Июля, 2011 - 17:39:43 - перейти к сообщению
OrmaJever
$query="SELECT NAME,TEXT FROM `marketing` WHERE `TEXT` LIKE '% ".$wrd." %'";
не работает
на букву "и" выдает слова с этой буквой
хотя предлоги ("как" например ) работают
а можно както вместо пробела поставить отрицание буквы или цифры?
(Добавление)
хотя может возникнуть проблема если слово первое в статье
...или последнее
(Добавление)
этоже и пробелов касается ((
(Добавление)
к томуже вариант пробелов не учитывает знаков препинания
(Добавление)
итог: Вокруг слова не должно быть буквы или цифры
как регулярку такую сделать?
4. OrmaJever - 03 Июля, 2011 - 17:47:30 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $query="SELECT NAME,TEXT FROM `marketing` WHERE `TEXT` LIKE '%[^а-яёa-z0-9]".$wrd."[^а-яёa-z0-9]%'";

можно попробовать так
5. LIME - 03 Июля, 2011 - 17:47:49 - перейти к сообщению
хотя нет...проблема не в этом видимо
я выделяю слово ф-цией strpos
чтоже делать? как слово выделить?
(Добавление)
OrmaJeverна до не только статьи выбрать но и слово выделить
...незнаю что делать
6. vsll - 03 Июля, 2011 - 18:12:34 - перейти к сообщению
7. OrmaJever - 03 Июля, 2011 - 18:42:45 - перейти к сообщению
LIME пишет:
OrmaJeverна до не только статьи выбрать но и слово выделить
...незнаю что делать

А?! либо я не понял, либо вы делаете из мухи слона
PHP:
скопировать код в буфер обмена
  1. $text = str_replace($word, '<b>'.$word.'</b>', $text);

так чтоле? Однако
8. LIME - 03 Июля, 2011 - 20:59:00 - перейти к сообщению
OrmaJever вы непоняли
надо в статьях которые выбраны найти искомое слово и выделить
выделение понятное дело ерунда вопрос...но...
как это слово найти...если при помощи strpos то будет выделятся первая попавшаяся комбинация искомых символов даже в середине слов ...
на примере союза "и" будет находится первая буква "и" в любом первом слове с ней
...вроде простая задача а я в тупике
может и для поиска в найденой статье регулярку применить?
посоветуйте оптимальное решение пжлст
(Добавление)
желательно найти первую позицию в тексте
остальной код под это заточен
много переписывать придется
(Добавление)
все уже написано для поиска через MATCH
но таам не все слова индексируются
вариант перекомпилировать сервер БД не катит
(Добавление)
надо выбрать некот орое колво символов до и перед словом чтоб не приводить в результатах поиска всю статью поэтоме нужна позиция слова в тексте
(Добавление)
Vasiliya вы издеваетесь? )) спасибо конечно за участие но проблема не решается так просто ))
9. Саныч - 03 Июля, 2011 - 22:06:57 - перейти к сообщению
LIME, по-моему вы все слишком перемудрили... Зачем столько ненужных действий?! Выбрали с помощью LIKE нужное (выше вам уже написали как), подсветили слова каким-то цветом (или еще как-то выделили) и вывели на экран... все...
10. LIME - 03 Июля, 2011 - 23:02:30 - перейти к сообщению
Саныч хорошо...
каким образом найти в статье нужное слово?
вы недооценили задачу...
если через strpos искать короткое слово то найдутся такиеже комбинации символов середине длинного слова...
(Добавление)
надо ограничить както слово по краям...логично если через отрицание букв и цифр...
как это сделать я пока не знаю
11. Саныч - 04 Июля, 2011 - 09:04:55 - перейти к сообщению
LIME пишет:
каким образом найти в статье нужное слово?

да очень просто. Предположим $text это у вас текст статьи, $word - слово для поиска...
PHP:
скопировать код в буфер обмена
  1. $text = preg_replace('#(\s)('.$word.')(\s|\.|\,|\!|\?\:\;)#i','$1<strong>$2</strong>$3',$text);

искомое слово долно быть ограничено слево пробелом, справа - пробел, запятая, точка, двоеточие, точка с запятой, знак вопроса или знак восклицания
12. vsll - 04 Июля, 2011 - 10:54:03 - перейти к сообщению
LIME пишет:
Vasiliya вы издеваетесь? ))
нет
В случае неудачи переход к следующему пункту
PHP:
скопировать код в буфер обмена
  1. LIKE '".$wrd."'"; #1
  2. LIKE '".$wrd."_'"; #2
  3.  

3. http://www.php.su/forum/topic.ph...28&topic=634
http://www[dot]sql[dot]ru/forum/actualth[dot][dot][dot]d[dot]aspx?tid=53231
13. LIME - 04 Июля, 2011 - 13:02:27 - перейти к сообщению
Саныч может словы быть и вообще ничем не ограничено по кокому либо краю
но я вобщем понял
просто в функции preg_replace надо применить регулярку от OrmaJever '%[^а-яёa-z0-9]".$wrd."[^а-яёa-z0-9]%'
тоесть что угодно но не буква или цифра
сработает ?
(Добавление)
Саныч хотя нет
необходимо не только выделить но и узнать позицию
...впринципе можно после выделения искать тег <strong>
или можно както изящнее ?
(Добавление)
OrmaJever Саныч елки моталки не работает регулярка '%[^а-яёa-z0-9]".$wrd."[^а-яёa-z0-9]%'
вообще не находит
14. Саныч - 04 Июля, 2011 - 13:46:19 - перейти к сообщению
LIME пишет:
может словы быть и вообще ничем не ограничено по кокому либо краю
это вы про то, что слово может быть первым или последним в строке? Подправил, проверил, работает...
PHP:
скопировать код в буфер обмена
  1. $text = preg_replace('#(\s|^)('.$word.')(\s|\.|\,|\!|\?\:\;|$)#iU','$1<strong>$2</strong>$3',$text);


LIME пишет:
просто в функции preg_replace надо применить регулярку от OrmaJever '%[^а-яёa-z0-9]".$wrd."[^а-яёa-z0-9]%'
не соглашусь... В тексте могут быть не только русские и латинские буквы, к примеру украинские "Ї" или "і"... По-этому лучше привязываться к символам, они во всех языках одинаковые...

LIME пишет:
узнать позицию
вот тут тоже немного не ясно... Позицию нужно узнать до выделения или уже после? Ведь она изменится... Да и вобще, зачем она вам нужна?
15. LIME - 04 Июля, 2011 - 14:04:54 - перейти к сообщению
Цитата:
'#(\s|^)('.$word.')(\s|\.|\,|\!|\?\:\;|$)#iU'


вы немогли бы пояснить чуть подробнее регулярку я их незнаю практически
в частности непонятно почему есть разница перед и после $word
и еще скажите можно ее применить в сравнении LIKE? напишите пжлст запрос если не затруднит.

 

Powered by ExBB FM 1.0 RC1