Настройка скрипта PHPru_Search 2.7 под UTF-8

braso

Новичок
20 лет сайт проработал на кодировке windows-1251. Стоял скрипт поиска сначала PHPru_Search 2.6, затем обновил до версии 2.7. Есть конечно же и кое - какие претензии к скрипту, но мирился с недостатками и в целом работа скрипта меня устраивала. Из-за шрифтов и англоязычных пользователей, которые иногда заглядывают на сайт пришлось перейти на кодировку UTF-8. Это предыстория.

Скрипт PHPru_Search 2.7 написан и работает под кодировку windows-1251. Пытался перекодировать под UTF-8 - результат плачевный. Вот что я нашёл по переводу скрипта на работу с кодировкой UTF-8

1) Все файлы из архива распаковываем в папку. Открываем все через notepad++. И в каждом нажимаем преобразовать в кодировку UTF-8 без bom.
2) Во всех файлах поиском ищем windows-1251 и меняем на UTF-8
3) Ищем функцию PHPruLow($input) и внутренность меняем на:

{
$down = mb_convert_case($input, MB_CASE_LOWER,'UTF-8');
return ($down);
}

4) Писаем во все стороны от радости так как все заработало. Но только после того как поменяем еще в одном месте $temp = explode('%%%',mb_convert_case($content, MB_CASE_LOWER,'UTF-8'));

К сожалению всё (кроме пункта №3), что было написано автором перевода скрипта на UTF-8 в итоге оказалось нерабочим. Пишу что и как . . .

1. После перекодирования с windows-1251 на UTF-8 без BOM невозможно войти в скрипт через пользователь admin и пароль pass
Пришлось закидывать скрипт в windows-1251 и пользоваться админкой с windows-1251. Вхожу в админку нормально, всё читаемо, настраиваю, пробую искать - ессссно - часть читаемо, часть кракозябры. Далее начинаю выборочно отдельные файлы конвертировать в UTF-8. В итоге Итог плачевный. Под UTF-8 скрипт так и не заработал. Друзья, выручайте!

Скрипт можно скачать по ссылке: PHPruSearch_2.7
 
Последнее редактирование:

Valick

Новичок
скрипт необходимо переписать "с ног до головы", вряд ли за это кто-то возьмётся бесплатно.
я бы вам посоветовал поискать другой скрипт поиска.
PHP:
function PHPruLow($input)
{
    $UP = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQWERTYUIOPASDFGHJKLZXCVBNM';
    $low = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяqwertyuiopasdfghjklzxcvbnm';
    $down = strtr($input, $UP, $low);
    return ($down);
}
 

AmdY

Пью пиво
Команда форума
@braso а не проще было бы разобраться. что не так было с англоязычными пользователями. Похоже, всего-то надо было их браузерам подсказать правильную кодировку заголовком на уровне php или конфига веб-сервера.
 

braso

Новичок
Не проще. Возможности по отображению шрифтов разные. Я уже почти 3500 страниц сайта перевёл в UTF-8. Это все страницы сайта вместе с галереями. Возвращаться назад на кодировку ANSI не хочу. Если не удасться запустить этот скрипт на UTF-8 то, конечно же, буду искать замену скрипту. Ссылка на сайт
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
Перекодировать можно за пару секунд https://www.tecmint.com/convert-files-to-utf-8-encoding-in-linux/
Сам скрипт перевести с наскока не получится, он мало того что без поддержки юникода писался, так ещё во времена php4, на семёрке многих функций уже даже нет вроде того же eregi_replace
 

braso

Новичок
Спасибо! У меня есть программа, которая прекрасно справляется с конвертацией. Правда она предназначена для конвертации TXT с ANSI в UTF-8. Но работает без проблем с HTML. Весь сайт я перекодировал этой прогой также менее чем за пару минут. Никаких проблем после перекодирования не возникло. Насчёт скрипта - я нашёл более раннюю версию этого скрипта этого же автора. Кажется версия 1.0. Скрипт работает нормально при перекодировании файлов скрипта с расширением php с ANSI на UTF-8. Но там урезан сервис. Нет админки. Подружить бы админку версии 2.7 с более ранней 1.0 . . . В принципе, в крайнем случае, можно использовать и эту версию. Пока пробую . . . особо спешить некуда.

Ну и ещё - я перебирал некоторые скрипты, которые есть в сети. К сожалению несколько скриптов были с ошибками в коде. Сайтов разработчиков скриптов уже нет, скачать напрямую у разработчика неоткуда. К примеру поисковый скрипт RiSearch, который нашёл в сети, с ошибкой . . .
 
Последнее редактирование:

braso

Новичок
Думал об этом. Я использую PHP Expert Editor v.4.3 . . ."лохматых годов" аж 2004года, тех годов, когда и писался поисковый скрипт (v.1.0 - 2003г., v.2.6 - 2.7 - 2003 -2004г.). Чисто в редакторе скрипт чистый, забрасываю на хостинг - вылетают ошибки.
 

braso

Новичок
В админку заходит. Проблема была в отсутствии точки в файле htaccess осталось решить две проблемы:
1. В настройках в админке, к примеру, ставишь показывать результат 7 ссылок, показывает все ссылки. которые скрипт нашёл.
2. Выводит результат на русском, кроме описания ссылок.
 

braso

Новичок
Как работает (вернее не работает) этот скрипт после перекодирования его в UTF-8 можете посмотреть по ссылке Специально оставил несколько страниц сайта с формой поиска. Может всё таки есть у кого идеи кроме идеи переписать скрипт заново? Неделю не занимался им из - за праздников.
 

braso

Новичок
Извиняюсь, возможно я адресом форума ошибся? Вроде php.club . . . похоже нет интереса к этой проблеме. Мне было бы проще самому написать скрипт на JAVA. Попробую ещё поискать где либо. Поделюсь исправленным рабочим скриптом, если решу проблему.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Думал об этом. Я использую PHP Expert Editor v.4.3 . . ."лохматых годов" аж 2004года,
Извиняюсь, возможно я адресом форума ошибся? Вроде php.club . . . похоже нет интереса к этой проблеме.
Думаю, помощь с таким нужно искать так же, лет 20 назад.
 

braso

Новичок
Чем владею. Когда то учил в институте. Но это крайний вариант.
 

AmdY

Пью пиво
Команда форума
Извиняюсь, возможно я адресом форума ошибся? Вроде php.club . . . похоже нет интереса к этой проблеме. Мне было бы проще самому написать скрипт на JAVA. Попробую ещё поискать где либо. Поделюсь исправленным рабочим скриптом, если решу проблему.
нет, интереса ни у кого нет, там плохой код 20ти летней давности, без коммерческого интереса никто в такую прорубь нырять не захочет. Поищите фрилансера за деньги. Там задача не сложная, если человек квалифицирован и понимает отличие мультибайтовой кодировки.
 

braso

Новичок
Спасибо! Я всё таки попробую сам с кодом разобраться. Скорее всего вряд ли получится. Но попробую. Всем спасибо за ответы. О результате напишу обязательно
 

AmdY

Пью пиво
Команда форума
смотри. принцип там простой.
1. сервер должен посылать заголовки об юникоде
2. файлы должны быть в юникоде без БОМ
3. со строками надо работать через юникод функции с приставкой mb_*
4. Регулярки должны работать со строкой как с юникодом, есть флаг u и специальные наборы символов
5. Помнить о мультибайтовости и не работать со строкой как с байтами, например как с массивом $str[5]
 

braso

Новичок
Спасибо! Я практически проблему решил! Можете проверить поиск. Скрипт переписывать не нужно!
 

braso

Новичок
Всё, полностью решил проблему! Всё работает идеально! Можете проверить!

Всем, принявшим участие, большое спасибо! Особое AmdY! 👍
Ну и негативное отношение к Valick, не посмотрев сам скрипт выдал совет "бесплатно"
👎

Форму поиска осталось поменять на более современную, ну и дизайн страницы с результатами "привязать" к основному дизайну сайта . . .
 
Последнее редактирование:

braso

Новичок
Теперь о самой доработке скрипта.

Сам скрипт версии 2.7 при конвертации в кодировку UTF-8 не работает. Я полностью оставил сам скрипт 2.7, но в нём часть файлов перевёл в UTF-8, часть оставил в ANSI, и два файла взял из предыдущей версии скрипта 2.6 и заменил ими аналогичные файлы в версии 2.7. Один, кажется, перевёл в UTF-8. далее использовал пункт 3 (описаловку вначале я давал) и скрипт заработал! Поменялся объём проиндексированной базы данных с 55 мГб до 35 мГб.
 
Сверху