За последние 24 часа нас посетили 55407 программистов и 1793 робота. Сейчас ищут 780 программистов ...

Подсчёт символов в переменной

Тема в разделе "PHP для новичков", создана пользователем ssh, 8 июл 2009.

  1. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    if( strlen($search) < 3)

    Если ввожу 2 символа латиницей, то проверка срабатывает, а если кириллицей, то нет.
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Установлена верная локаль?
    Строка не utf-8
     
  3. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Apple
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     
  4. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Apple
    Так, можно ли усовершенствовать проверку?
     
  5. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    ssh
    setlocale (LC_ALL, 'ru_RU.utf8');
     
  7. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
  8. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    if (!function_exists('mb_strlen'))
    {
    function mb_strlen($search)
    {
    return strlen(iconv("UTF-8","cp1251", $search));
    }
    }


    if(empty($search) or mb_strlen($search) < 3)

    Так работает, но когда скажем вставляешь 3 таких символа ššš -то проверка не проходит!
     
  9. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    ssh
    И не будет. Посмотрите, что делает ваша функция - конвертирует данные из utf-8 в cp1251. А в cp1251 нет таких символов.
     
  10. ssh

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

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Elkaz
    Ну а что делать? :)
     
  11. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    А зачем делать так?
    Не проще сделать, чтобы iconv_strlen или mb_strlen были доступны?
     
  12. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    ssh
    http://php.net/mb_strlen (PHP>=4.0.6; PHP5)

    Или ждать РНР6, где будет (по обещаниям) полная (более лучшая) поддержка utf8
    index.php (сохранить в utf8, а не в ansi)
    PHP:
    1.  
    2. <?php
    3. setlocale (LC_ALL, 'ru_RU.utf8');
    4. header ('Content-type: text/plain; charset=utf-8');
    5. $string = 'ššš';
    6. echo 'String length: ' . mb_strlen ($string);
    7. ?>
    8.