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

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

1. AlexGreF - 27 Марта, 2009 - 10:07:49 - перейти к сообщению
Такая проблема:
есть таблица mysql, в ней поле `city` с городами. При поиске использую такую строку:

CODE (text):
скопировать код в буфер обмена
  1. "SELECT FROM `table` WHERE `city` LIKE '%$city%'"


Возникает проблема - при поиске например города Минск, скрипт выдаёт всякие Наро-фомински и т.д...

Хочу решить эту проблему запретом на наличие букв до и после поисковой фразы,
в этом случае символы (кавычки, тире....) и пробел будут разрешены. Это нужно чтобы например при поиске со словом "Петербург" скрипт так же находил и "Санкт-петербург".

Вот только не знаю как это реализовать. Знаю что можно как-то использовать регулярные выражения в sql-запросе.

Помогите, плиз, кто знает!
2. Champion - 27 Марта, 2009 - 13:50:55 - перейти к сообщению
city regexp "\W*$city\W*"
3. AlexGreF - 30 Марта, 2009 - 05:55:26 - перейти к сообщению
Champion пишет:
city regexp "\W*$city\W*"

Что-то не работает. Пишу такой код:
CODE (text):
скопировать код в буфер обмена
  1. SELECT `city` FROM `table` WHERE city regexp "\W*$city\W*"

В результате выводит так же как и при city LIKE "%$city%"
4. Champion - 30 Марта, 2009 - 08:37:25 - перейти к сообщению
По-моему, это странно. А так?
"[^a-zA-Z]*$city[^a-zA-Z]*"
5. AlexGreF - 30 Марта, 2009 - 15:24:21 - перейти к сообщению
Champion пишет:
По-моему, это странно. А так?
"[^a-zA-Z]*$city[^a-zA-Z]*"


Ok, вот так работает :
CODE (text):
скопировать код в буфер обмена
  1. SELECT `city` FROM `cars` WHERE city regexp "[^a-zA-Zа-яА-Я]$city[^a-zA-Zа-яА-Я]*$"

 

Powered by ExBB FM 1.0 RC1