Strtolower удаляет из строки цифры.

Тема в разделе "PHP", создана пользователем MegO, 28 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. MegO

    MegO Постоялец

    Регистр.:
    13 фев 2009
    Сообщения:
    130
    Симпатии:
    13
    Подаю strtolower строку состоящую из ру букв и цифр.
    Возвращает только буквы, а цифры вырезает.
    Код приводить не буду т.к. ничего хитрого там нет.
    Платформа - windows. Запускаю на денвере.
    Думал может проблема в локале, но с алфавитом работает правильно.
    Подскажите, в чём может быть проблема?
     
  2. tarantas

    tarantas Постоялец

    Регистр.:
    22 мар 2008
    Сообщения:
    75
    Симпатии:
    14
    Попробуй :

    1. mb_strtolower()
    2. mb_convert_case($string, MB_CASE_LOWER, "CP1251")

    ( Один из вариантов. )
     
  3. picasik

    picasik Постоялец

    Регистр.:
    13 ноя 2006
    Сообщения:
    81
    Симпатии:
    21
    может у тебя в коде где-то ошибка? проверил
    echo strtolower('АРНЛ76НОТ');
    результат:
    арнл76нот

    все работает правильно
     
  4. MegO

    MegO Постоялец

    Регистр.:
    13 фев 2009
    Сообщения:
    130
    Симпатии:
    13
    Не работает :)

    Это всё понятно что правильно должно работать.
    echo до strtolower с цифрами, после - без цифр.
    Дело ещё в том, что использую phpmorphy в этом скрипте, может он устанавливает какие-то настройки специфические.
     
  5. wwwitalya

    wwwitalya Создатель

    Регистр.:
    4 май 2009
    Сообщения:
    45
    Симпатии:
    18
    Как показывает практика, время поиска непонятной ошибки прямо пропорционально ее тупизне :) Поэтому выложи код побольше.
     
  6. MegO

    MegO Постоялец

    Регистр.:
    13 фев 2009
    Сообщения:
    130
    Симпатии:
    13
    $textstr=implode(' ', $textarray[0]);
    $textstr=ucfirst(strtolower($textstr));

    Вот код)
    Всё что выше него, это формирование $textstr, запросы из базы и прочее.

    Ещё раз повторяю echo до $textstr=ucfirst(strtolower($textstr)); выводит строку с цифрами.

    echo после $textstr=ucfirst(strtolower($textstr)); выводит уже без цифр.

    Думаю, что проблема в каких либо установках типо локали, не сталкивался с таким по этому не знаю.
     
  7. noiz

    noiz Создатель

    Регистр.:
    9 апр 2009
    Сообщения:
    16
    Симпатии:
    1
    И что же выводит это самое echo?
     
  8. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    А может ucfirst чудит?
     
  9. MegO

    MegO Постоялец

    Регистр.:
    13 фев 2009
    Сообщения:
    130
    Симпатии:
    13
    Строки каждый разные, какая бы строка ни была проблема с цифрами всё равно возникает.

    Пробывал убирать ucfirst, ошибка осталась.

    Добавлено через 18 минут
    Проблему решил сам. Оказалось дело совсем в другом, поспешил. Регулярка не правильная была.
    Всем спасибо за ответы, правда флуд получился, а не топик...
    Извините :)

    P.S. Спать - полезно.
     
  10. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    передай в функцию текст напрямую, а не из базы:

    echo strtolower('abc555def');
    echo strtolower('абв555где');
    echo strtolower('qwerty');
    echo strtolower('йцукенг');
    echo strtolower('9876543210');

    что выведет?
     
Статус темы:
Закрыта.