Не корректно обрабатывает

MikeN

Guest
Доброе время суток!
У меня вот такая проблема:
Имеется веб-справочник организаций. Организации добавляются путем парсинга Excel файла. Скрипт работает с двумя таблицами в БД - Рубрики и Организации. В таблице Рубрики записи - Аварийные службы; Авиакомпании, аэропорты; Автозаправочные станции; и т.д.

$rubrics_list - массив рубрик, взятых из таблицы Рубрики.
$data - массив данных из excel файла.

PHP:
for ($i = 0; $i < $data->sheets[0]['numRows']; $i++) {
            $r = $triger = $rubrica = 0;
            while ($r < count($rubrics_list)){
                // Сравнивает названия рубрики из БД с полученной из Excel, если не то - продолжает перебор.
                // Если равны - присваивает соответствующий id
                if (strtolower(trim($data->sheets[0]['cells'][$i+1][5])) == strtolower(trim($rubrics_list[$r]['a_title']))) {
                    $rubrica = $rubrics_list[$r]['id'];
                    break;
                }
                $r++;
            }

            if($rubrica != 0){
            ... // какие-то еще действия
            }
           ... // какие-то еще действия
}
Так вот проблема в том, что в цикле while при сравнении не верно проходит сравнение Аварийные службы с Аварийными службами О_о Отслеживаю в Netbeans - и там, и там равные значения, а не срабатывает true.

С остальными рубриками все нормально - все записываются в БД корректно.

UPD: В Excel файле рубрики написаны капсом. Но если написать аварийные службы без капса с Заглавной буквыв - то true срабатывает О_о,
 

Lakr

Новичок
а если потом опять вбить капсом, но руками, перестаёт срабатывать? единственная мысль... дикая правда... что там апостроф технический мог затесаться перед словами аварийные службы...
апд: пришла ещё одна мысля =) может буква какая из другого языка например рус а != a англ... такое бывает если пользоватся программами транслитерации, некоторые на столько ленивы что не заморачиваются менять одинаково отображаемые символы в разных языках
 

MikeN

Guest
Все. Сделал...
Поубивал бы секретарей-машинисток...
Lakr, за наводку спасибо
 

MikeN

Guest
Извиняюсь, но после добавления trim в код (обновил код в первом посте) проблема решилась не до конца.
Вернее на домашнем пк все работает (сервер wamp), а вот как только забросил скрипт на SpaceWeb, так опять не верно проходит сравнение, причем теперь всех рубрик без исключения, НО почему-то выборочно - не со всеми строками экселя - с некоторыми все же правильно находил совпадения О_о

Может владельцы сайтов базирующихся на sweb.ru подскажут в чем может быть дело? Может настройки сервера, хотя глупость, наверно, говорю?
 

melnikaite

Новичок
Извиняюсь, но после добавления trim в код (обновил код в первом посте) проблема решилась не до конца.
Вернее на домашнем пк все работает (сервер wamp), а вот как только забросил скрипт на SpaceWeb, так опять не верно проходит сравнение, причем теперь всех рубрик без исключения, НО почему-то выборочно - не со всеми строками экселя - с некоторыми все же правильно находил совпадения О_о

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

tz-lom

Продвинутый новичок
melnikaite
а вы знаете что есть расширение mb_string и как бы вы с юникод строками работаете и всё таки наверное тогда именно его и надо использовать?
 

melnikaite

Новичок
к сожалению mb_strtolower() не работает с кириллицей
вот адекватное решение
PHP:
mb_convert_case($string, MB_CASE_LOWER, "UTF-8");
 
Сверху