utf-8 и string

Тема в разделе "PHP Pro", создана пользователем CrashX, 16 дек 2010.

Статус темы:
Закрыта.
  1. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    интересует замена функций
    substr();
    strrchr();
    strlen();
    и тп
    использование библиотеки mb_string не катит, не в силу отсутствия на сервере, а из личных соображений

    вот допустим
    strlen
    можно делать так
    как седать регуляркой перевод в другой регистр, образать до указанной длины
    найти последнее в вхождение или обрезать до указанной длины с учетом пробела...
     
  2. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    А чем тебе не нравится mb_spring?? Тем более что можно строковые функции не переписывать в скрипте а сделать им перезагрузку:
    PHP:
    ini_set('mbstring.internal_encoding'$ini->Getvar('Charset'));
    ini_set('mbstring.func_overload''7'); //1-email, 2-string, 4-regex
    ini_set('mbstring.encoding_translation''0');
    ini_set('mbstring.http_input''pass');
    ini_set('mbstring.http_output''pass');
    ini_set('mbstring.detect_order''auto');
    ini_set('mbstring.language''Neutral');
    ini_set('mbstring.substitute_character''none');
    Просто код рпазмести в начале скрипта, и str**** будут обрабатываться mb_****
     
    XSiteCMS нравится это.
  3. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    как решение неплохо, но
    "допустим" на сервере нет данного раширения, не спорю редкость... но все же

    как сделать ре используюя mb_*
     
  4. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    Послать лесом того хостера и найти нормального, у которого есть элементарные вещи. Если там нет mb_string, то это плохой хостер, поскольку это вещь первой необходимости. А у плохого хостера косяки будут проявлятся и проявляться. Имел печальный опыт: то сейфмод включат не предупредив, то register_globals, то с "localhost" к БД перестало коннектиться "случайно"....

    Так что оно тебе надо ??? Меняй не задумываясь, благо есть выбор.
     
  5. B0nuse

    B0nuse Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    106
    Симпатии:
    21
    Чтобы избегать зависимостей от подобных настроек хостинга - нужно программировать с проверками.
     
  6. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    спасибо я все понимаю, у моего хостера есть все)
    но это больше спортивынй интерес)))

     
  7. vadoru

    vadoru Постоялец

    Регистр.:
    28 янв 2007
    Сообщения:
    122
    Симпатии:
    46
    Посмотрите в фреймворке Kohana в каталоге
    kohana/system/utf-8
     
  8. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    Нужно, да не всегда ж ведь свой код работает :))
     
  9. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Я для обрезки строки до определённого количества символов использую свою самописную функцию:

    PHP:
    function utf8_substr($str,$from,$len,$pristavka="..."){
        return 
    preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
        
    '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
        
    '$1'.$pristavka,$str);
    }
    Где str - наш текст, from — начало куска который надо оставить (порядковый номер символа в строке), $len - сколько символов оставить, $pristavka - что дописывать в конце (по умолчанию - ...)

    Использование такое:

    PHP:
    $mytext 'Этот текст я хочу обрезать до 20 символов';
    echo 
    utf8_substr($mytext,0,20,'...');
    Результат:

     
Статус темы:
Закрыта.