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 :: регулярка [2]

 PHP.SU

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


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

> Без описания
Саныч
Отправлено: 04 Июля, 2011 - 14:24:46
Post Id



Участник


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


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




конечно могу... Вот что такое слово? Это подряд идущие буквы отделенные пробелами с обеих сторон. Верно?.. Но... В конце слова кроме пробела могут быть еще и разные символы, как-то точка, запятая ну и т.д. А вот в начале слова этих символов быть не может (т.к. по правилам написания они тоже отделяются пробелом)... Отсюда и получаем:
(\s|^) - означает пробел или же начало строки (это в том случае если искомое слово идет самым первым в строке, т.е. перед ним нет ничего)
('.$word.') - собственно искомое слово
(\s|\.|\,|\!|\?\:\;|$) - означает пробел, точку, запятую, знак восклицания, знак вопроса, двоеточие, точку с запятой или конец строки (это в том случае если искомое слово идет самым последним в строке, т.е. после него нет никаких символов)

PHP:
скопировать код в буфер обмена
  1. $query = 'SELECT * FROM table WHERE text REGEXP "(\s|^)'.$word.'(\s|\.|\,|\!|\?\:\;|$)iU" ';

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



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


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


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


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




Саныч
Invalid query: Got error 'repetition-operator operand invalid' from regexp


$query = "SELECT NAME,TEXT FROM marketing WHERE TEXT REGEXP '(\s|^)".$word."(\s|\.|\,|\!|\?\:\;|$)iU'"; -я не ошибся в чем-нибудь ?
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 15:32:55
Post Id



Участник


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


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




Вот попробуйте еще так:
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT NAME,TEXT FROM marketing WHERE TEXT REGEXP '( |^)".$word."( |\\.|\\,|\\!|\\?|\\:|\\;|$)'";


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


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


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


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




Саныч аналогично
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 15:47:35
Post Id



Участник


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


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




LIME пишет:
Саныч аналогично
обманывать нехорошо Подмигивание Я у себя специально создал базу и на этот раз проверил, все отлично находит... Это вы что-то у себя перемудрили... Вобщем код в студию!


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


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


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


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




Саныч возможно...
посмотрите
тут работающий вариант с другим запросом
менял строку запроса на ваши варианты
Спойлер (Отобразить)
 
 Top
LIME
Отправлено: 04 Июля, 2011 - 15:54:41
Post Id


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


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


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




вот вам и таблица что не создавать
Скачать файл: test.sql.zip
Скачан раз: 88
 
 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