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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
LIME
Отправлено: 03 Июля, 2011 - 15:10:14
Post Id


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


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


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




как запрос доработать чтоб рядом букв и цифр со словом не стояло?
ато находит если и в середине слова комбинация букв встречается

$query="SELECT NAME,TEXT FROM `marketing` WHERE `TEXT` LIKE '%".$wrd."%'";
 
 Top
OrmaJever
Отправлено: 03 Июля, 2011 - 16:20:45
Post Id



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


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


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




а пробелы поставить пробовали? Растерялся
PHP:
скопировать код в буфер обмена
  1. $query="SELECT NAME,TEXT FROM `marketing` WHERE `TEXT` LIKE '% ".$wrd." %'";


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
LIME
Отправлено: 03 Июля, 2011 - 17:39:43
Post Id


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


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


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




OrmaJever
$query="SELECT NAME,TEXT FROM `marketing` WHERE `TEXT` LIKE '% ".$wrd." %'";
не работает
на букву "и" выдает слова с этой буквой
хотя предлоги ("как" например ) работают
а можно както вместо пробела поставить отрицание буквы или цифры?
(Добавление)
хотя может возникнуть проблема если слово первое в статье
...или последнее
(Добавление)
этоже и пробелов касается ((
(Добавление)
к томуже вариант пробелов не учитывает знаков препинания
(Добавление)
итог: Вокруг слова не должно быть буквы или цифры
как регулярку такую сделать?
 
 Top
OrmaJever
Отправлено: 03 Июля, 2011 - 17:47:30
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $query="SELECT NAME,TEXT FROM `marketing` WHERE `TEXT` LIKE '%[^а-яёa-z0-9]".$wrd."[^а-яёa-z0-9]%'";

можно попробовать так

(Отредактировано автором: 03 Июля, 2011 - 17:48:14)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
LIME
Отправлено: 03 Июля, 2011 - 17:47:49
Post Id


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


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


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




хотя нет...проблема не в этом видимо
я выделяю слово ф-цией strpos
чтоже делать? как слово выделить?
(Добавление)
OrmaJeverна до не только статьи выбрать но и слово выделить
...незнаю что делать
 
 Top
vsll
Отправлено: 03 Июля, 2011 - 18:12:34
Post Id


Частый посетитель


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


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




 
 Top
OrmaJever
Отправлено: 03 Июля, 2011 - 18:42:45
Post Id



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


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


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




LIME пишет:
OrmaJeverна до не только статьи выбрать но и слово выделить
...незнаю что делать

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

так чтоле? Однако


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
LIME
Отправлено: 03 Июля, 2011 - 20:59:00
Post Id


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


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


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




OrmaJever вы непоняли
надо в статьях которые выбраны найти искомое слово и выделить
выделение понятное дело ерунда вопрос...но...
как это слово найти...если при помощи strpos то будет выделятся первая попавшаяся комбинация искомых символов даже в середине слов ...
на примере союза "и" будет находится первая буква "и" в любом первом слове с ней
...вроде простая задача а я в тупике
может и для поиска в найденой статье регулярку применить?
посоветуйте оптимальное решение пжлст
(Добавление)
желательно найти первую позицию в тексте
остальной код под это заточен
много переписывать придется
(Добавление)
все уже написано для поиска через MATCH
но таам не все слова индексируются
вариант перекомпилировать сервер БД не катит
(Добавление)
надо выбрать некот орое колво символов до и перед словом чтоб не приводить в результатах поиска всю статью поэтоме нужна позиция слова в тексте
(Добавление)
Vasiliya вы издеваетесь? )) спасибо конечно за участие но проблема не решается так просто ))
 
 Top
Саныч
Отправлено: 03 Июля, 2011 - 22:06:57
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




LIME, по-моему вы все слишком перемудрили... Зачем столько ненужных действий?! Выбрали с помощью LIKE нужное (выше вам уже написали как), подсветили слова каким-то цветом (или еще как-то выделили) и вывели на экран... все...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
LIME
Отправлено: 03 Июля, 2011 - 23:02:30
Post Id


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


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


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




Саныч хорошо...
каким образом найти в статье нужное слово?
вы недооценили задачу...
если через strpos искать короткое слово то найдутся такиеже комбинации символов середине длинного слова...
(Добавление)
надо ограничить както слово по краям...логично если через отрицание букв и цифр...
как это сделать я пока не знаю
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 09:04:55
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




LIME пишет:
каким образом найти в статье нужное слово?

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

искомое слово долно быть ограничено слево пробелом, справа - пробел, запятая, точка, двоеточие, точка с запятой, знак вопроса или знак восклицания


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
vsll
Отправлено: 04 Июля, 2011 - 10:54:03
Post Id


Частый посетитель


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


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




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.sql.ru/forum/actualthread.aspx?tid=53231

(Отредактировано автором: 04 Июля, 2011 - 10:54:33)

 
 Top
LIME
Отправлено: 04 Июля, 2011 - 13:02:27
Post Id


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


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


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




Саныч может словы быть и вообще ничем не ограничено по кокому либо краю
но я вобщем понял
просто в функции preg_replace надо применить регулярку от OrmaJever '%[^а-яёa-z0-9]".$wrd."[^а-яёa-z0-9]%'
тоесть что угодно но не буква или цифра
сработает ?
(Добавление)
Саныч хотя нет
необходимо не только выделить но и узнать позицию
...впринципе можно после выделения искать тег <strong>
или можно както изящнее ?
(Добавление)
OrmaJever Саныч елки моталки не работает регулярка '%[^а-яёa-z0-9]".$wrd."[^а-яёa-z0-9]%'
вообще не находит
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 13:46:19
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




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 пишет:
узнать позицию
вот тут тоже немного не ясно... Позицию нужно узнать до выделения или уже после? Ведь она изменится... Да и вобще, зачем она вам нужна?

(Отредактировано автором: 04 Июля, 2011 - 13:51:04)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
LIME
Отправлено: 04 Июля, 2011 - 14:04:54
Post Id


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


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


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




Цитата:
'#(\s|^)('.$word.')(\s|\.|\,|\!|\?\:\;|$)#iU'


вы немогли бы пояснить чуть подробнее регулярку я их незнаю практически
в частности непонятно почему есть разница перед и после $word
и еще скажите можно ее применить в сравнении LIKE? напишите пжлст запрос если не затруднит.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB