[Mod] Равнозначность тире и точки при поиске

Тема в разделе "WebAsyst", создана пользователем mdss, 2 окт 2015.

Метки:
Модераторы: mdss
  1. mdss

    mdss ♖♘♗♕♔♗♘♖

    Moderator
    Регистр.:
    20 фев 2007
    Сообщения:
    1.126
    Симпатии:
    668
    Понадобилось сделать, чтобы при поиске товаров тире и точка были равнозначными символами.
    Например, чтобы при поиске аааа-вввв также выводило результаты аааа.вввв.
    Решение.
    Открываем файл /published/SC/html/scripts/core_functions/product_functions.php
    Ищем функцию _searchPatternReplace и заменяем ее содержимое на такое:
    PHP:
    function _searchPatternReplace($string){
        static 
    $patterns = array('/\\\\/',
                                
    '/%/',
                                
    '/_/',
                                
    '/(^|[^\/]{1})(\?)/',
                                
    '/([\/]{1})(\?)/',
                                
    '/(^|[^\/]{1})(\*)/',
                                
    '/([\/]{1})(\*)/',
                                
    '/(^|[^\/]{1})\+/',
                                
    '/([\/]{1})\+/',
                                
    '/\-/'
                                
    );
        static 
    $replacements = array('\\\\\\\\',
                                    
    '\\%',
                                    
    '\\_',
                                    
    '\\1_',
                                    
    '?',
                                    
    '\\1%',
                                    
    '*',
                                    
    '\\1 ',
                                    
    '+',
                                    
    '.');
        return 
    preg_replace($patterns,$replacements,$string);
        
    //return $res;
        //return str_replace(array('%','_','?','%'),array('\\%','\\_','_','%'),$string);
    }
     
    zarema нравится это.
  2. zarema

    zarema

    Регистр.:
    19 сен 2007
    Сообщения:
    321
    Симпатии:
    40
    А можете еще подсказать который файл и где нужно править, который отвечает за транслитерацию страниц добавленных товаров? Чтобы подправить правила транслитерации? Спасибо заранее.
     
  3. maksd

    maksd Создатель

    Регистр.:
    29 дек 2012
    Сообщения:
    10
    Симпатии:
    0
    а подскажите как сделать что бы убирало все знаки при поиске? например тот же - ? например вводишь 04466-0у010 а в поиске выходило 044660у010 ну и так же искало
     
  4. maksd

    maksd Создатель

    Регистр.:
    29 дек 2012
    Сообщения:
    10
    Симпатии:
    0
    подскажите? убрать просто знак . тут? '.');
     
  5. wiggly

    wiggly Постоялец

    Регистр.:
    25 мар 2016
    Сообщения:
    112
    Симпатии:
    24
    Судя по коду. Здесь вместо дефиса подставляется точка. А значит вместо 154-454-454 будут найдены товары 154.454.454