За последние 24 часа нас посетили 26315 программистов и 1814 роботов. Сейчас ищут 1024 программиста ...

Помогите оптимизировать код

Тема в разделе "Прочее", создана пользователем Apple, 26 сен 2009.

  1. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Для одного из своих сайтов написал код, который перенаправляет пользователя на правильную страницу при ошибке.
    Очень часто при написании ссылок на форумах люди теряют буквы или ошибаются в английской грамматике и так получается, что страница не найдена.
    Например, вместо services набирают servicе, или content вместо contents.
    Вариантов много, тоже portflio вместо portfolio.
    Есть скрипт (см. ниже), который это исправляет в случае 50% совпадения.

    Это только кусок кода, вырванный из полноценного скрипта:

    PHP:
    1. <?php
    2. // Copyright (c) Apple :: php.ru
    3.  
    4.  
    5. // Массив, куда будут помещены результаты
    6. $found = array();
    7.            
    8. // Существующие слова (в моём случае - страницы)
    9. $exists = array("contact", "portfolio", "services", "about", "contents");
    10.            
    11.            
    12. /**
    13.  * Перебор слов и рассчет релевантности
    14.  */
    15. foreach($exists as $word) {
    16.     similar_text($_GET['wish'], $word, $found[$word]);
    17. }
    18.            
    19. // Вывод результата в случае 50% совпадения
    20. if(max($found) >= 50) {
    21.     echo "Возможно, вы имели в виду <b>" . array_search(max($found), $found);
    22. } else echo "Похожих страниц не найдено";
    23.  
    24. ?>
    Результат примерно следующий:
    [​IMG]

    Дело в том, что работает он так, как надо.
    Но то, как он выглядит и то, как он это делает ... знаю, что можно лучше.
    Вдохновила меня эта тема, в которой люди блещут умом =)
    Помогите оптимизировать код .. или рационализировать.
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Это не очень серьёзная тема, просто хочется видеть возможные варианты решения этой задачи.
     
  3. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Нормально он всё делает. Просто спорный вопрос нужен ли этот скрипт при таком кол-ве страниц (они все есть в меню, отгадал? :)). А при большом количестве страниц они все выглядят как чё-то/ещё-чё-то и насколько есть смысл использовать скрипт в данном случае. "чё-то" есть в меню, а "ещё-чё-то" мало кто руками и по памяти введёт.
     
  4. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Сайт, по большей части, статический.
    Т.е фиксированное количество разделов и многие из них представляют вложенные модули.
    Например, в услугах (модуль) есть регистрастрация домена (модуль) в который входит непосредственно регистрация, проверка, информация и пр., в свою очередь другие модули могут иметь такую же паутинную структуру.
    Отсюда получается, что страницы, относящиеся к конкретному модулю, могут быть в большом количестве.
    Например: services; services/domains; services/domains/registration; services/domains/checking.
    Или в случае с портфолио — разделы, года и работы, где сам адрес portfolio/ остается неизменным.

    Массив не перегружен ненужными именами страниц, в метод служебного (сервисного) класса передаётся массив возможных страниц для определенного модуля, который также может быть вложенным (service для корректировки services и domain для корректировки в domains одновременно).

    Поэтому, мне что-то не нравится вызов функции array_search.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
  6. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    посмотрим, сколько у меня будет запросов на "Туристе"