Fatal error: Cannot redeclare strtolower_ru() (previously declared in /home/port/domains/public_html/components/victorina/frontend.php:15) in /home/port/domains/public_html/modules/mod_victorina/module.php on line 58 Кто знает как исправить?
Скачайте по ссылке-> http://rghost.ru/50347513 --- Добавлено, 22 ноя 2013 --- Пробовал заменить ф-цию strtolower_ru(); на станндартную $str = strtolower($str); та самая ошибка. А когда заменил на эту PHP: mb_convert_case(($vic['answer']), MB_CASE_LOWER, "UTF-8"); то ошибки не выдаёт, а все ответы в викторине выдает за неправильные
удалить функцию PHP: function strtolower_ru($text) {$alfavitlover = array('ё','й','ц','у','к','е','н','г', 'ш','щ','з','х','ъ','ф','ы','в', 'а','п','р','о','л','д','ж','э', 'я','ч','с','м','и','т','ь','б','ю');$alfavitupper = array('Ё','Й','Ц','У','К','Е','Н','Г', 'Ш','Щ','З','Х','Ъ','Ф','Ы','В', 'А','П','Р','О','Л','Д','Ж','Э', 'Я','Ч','С','М','И','Т','Ь','Б','Ю');return str_replace($alfavitupper,$alfavitlover,strtolower($text));} и заменить ее всюда вместо PHP: strtolower_ru пхпешной ф-цией PHP: mb_strtolower() тоже самое в файле public_html/modules/mod_victorina/module.php Че за ЦМСка такая? )
CMSка InstantCms 1.10.1. Сейчас ещё раз испробовал как ты написал. Да я все функции пхпэшные по смену регистра уже испробовал. Викторина работает на сессиях и начинаю думать, что здесь ошибка в сессиях.
вынести в отдельный файл . Example: /*mylib.php*/ function strtolower_ru($text) { $alfavitlover = array('ё','й','ц','у','к','е','н','г', 'ш','щ','з','х','ъ','ф','ы','в', 'а','п','р','о','л','д','ж','э', 'я','ч','с','м','и','т','ь','б','ю'); $alfavitupper = array('Ё','Й','Ц','У','К','Е','Н','Г', 'Ш','Щ','З','Х','Ъ','Ф','Ы','В', 'А','П','Р','О','Л','Д','Ж','Э', 'Я','Ч','С','М','И','Т','Ь','Б','Ю'); return str_replace($alfavitupper,$alfavitlover,strtolower($text)); } а на старом месте объявления подключить через include_once('mylib.php');
это я понимаю. Но почему когда правлю под эту ф-цию PHP: mb_convert_case(($vic['answer']), MB_CASE_LOWER, "UTF-8"); ошибки не выдаёт, а все ответы в викторине выдает за неправильные. В чем проблема тогда? --- Добавлено, 26 ноя 2013 --- ту самую ошибку выдает...
У меня было подобное. И проблема может лежать далеко не в frontend.php. Могут быть зависимые функции, а вот они эту ошибку и выдают. Верни все как было и повтори в обратном порядке. Если не поможет, то дебагер в руки.
С настройками сервера всё впорядке. --- Добавлено, 26 ноя 2013 --- Я сейчас пробовал вобще без никаких ф-ций, просто напрямую с БД. По идеи должно было работать если ответы в БД в маленьком регистре и поле ввода писался ответ тоже в маленьком регистре. Ошибку всёравно выдавало, что неправильный ответ. Тут ошибка кроется не в ф-цие смены регистра, а в неправильном обращении к БД из пхпэшнего файла (frontend.php). P.S.: на ф-цию PHP: mb_strtolower() не ругается.
функции mb_ применяются если кодировка утф8 говорю же, что-то с настройками сервера, кодировкой и т.д.
может так можно? PHP: mb_strtolower('РУССКИЙ ТЕКСТ',"UTF-8");function mb_ucfirst($переменная,$кодировка){return mb_strtoupper(mb_substr($переменная,0,1,$кодировка),$кодировка).mb_substr($переменная,1,mb_strlen($переменная),$кодировка);}mb_ucfirst('русский текст',"UTF-8"); --- Добавлено, 26 ноя 2013 --- У меня сервер полностью на utf8. Проблемы как раз то были когда сайт был на windows-1251
function mb_ucfirst($string, $e ='utf-8') { if (function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($string)) { $string = mb_strtolower($string, $e); $upper = mb_strtoupper($string, $e); preg_match('#(.)#us', $upper, $matches); $string = $matches[1] . mb_substr($string, 1, mb_strlen($string, $e), $e); } else { $string = ucfirst($string); } return $string; } mb_strtolower('РУССКИЙ ТЕКСТ',"UTF-8"); mb_ucfirst('русский текст');