Проблемы с буквами Е Ё

97
18 февраля 2022, 13:20

В БД имеются дублирующие друг друга записи у которых отличаются только буквы Е и Ё. Например, есть две записи актер и актёр. Постгресс считает, что это разные слова, соответственно выводит только одно из них по точному совпадению. Можно ли как-то средствами пхп приравнять эти буквы друг к другу и выводить оба слова независимо от того какая буква была написана?

Answer 1

Используйте unaccent вашей базы данных, который позволяет строить связи между разными литерами, обозначающими одну и ту же сущность.

À        A
Á        A
        A
à       A
Ä        A
Å        A
Æ        A

Документация: https://www.postgresql.org/docs/9.1/unaccent.html

Answer 2

Вы можете изменить свой SELECT запрос, заменив перед поиском Ё на Е используюя функцию REPLACE

И перед отправкой запроса средствами php заменить все Ё на Е в строке которую отправите.

 $str = str_replace('ё', 'е', $str);

Таким образом, строка по которой будет осуществен поиск не будет содержать букву Ё и строки по которым будем искать, тоже не будут содержать Ё. При этом запрос вернет строки с правильными буквами (как они записаны в БД)

READ ALSO
Пример фильтрации поиска на react redux

Пример фильтрации поиска на react redux

Нужна помощь в объяснении подобного поиска (не обязательно код, а по шагам, как лучше сделать)Без каких-либо готовых решений/плагинов

110
Как удалить пробелы перед текстом

Как удалить пробелы перед текстом

Нужно пройтись по массиву translates и удалить все пробелы перед началом текста или если в тесте одни пробелы то удалить их все и чтобы была просто...

99
decimal to bin странно работает

decimal to bin странно работает

мучался, мучался, родил этот кодесли убрать условие в главной функции(не рекурсии), то после цифры 16 конвертер работает некорректно(его нужно...

95