Поиск по сайту Подписаться Реклама
Яндекс.Метрика
Яндекс цитирования
Информационный сайт по аудио и видео
blog o_0 ИгрыRock Paper Scissors RouletteRi MappyYoyofighterGrand Prix Challenge IIНастольный футболCaptain America & The AvengersСофтNescube 1.2Codec Pack All In 1 6.0.1.9DivX Create Bundle 6.0Vista ThemeFestalon 0.3.0 Winamp Plug-inHouse's Speedometer 1.0СтатьиВыигрывай на ПокердомеПрофессиональный игровой клуб с автоматами и слотамиСовременные виртуальные казино сегодня предлагают клиентам самый разнообразный выбор развлечений, которые позволят стать успешным и перспективным пользователемКлипыСоздание DVD (этапы создания) (2000 г.)Казино Вулкан онлайн бесплатно без регистрации Вкусное700! игр для сотовых телефонов700! игр для сотовых телефоновПакет из 700 игр для мобильников! Преимущественно адаптированных для Siemens, но многие идут и на телефонах других марок. 64 мегабайта отборного…Сборник лучших игр Денди (NES, Dendy)Сборник лучших игр Денди (NES, Dendy)По многочисленным просьбам пользователей моего сайта www.ddvhouse.ru была собрана коллекция лучших, по мнению игроков, игр Денди. Все игры…

PHP и UTF-8. Часть 2

Продолжая тему работы со строками в кодировке UTF-8, рассмотрим еще несколько функций, работающих без установленного в PHP расширения Multibyte String Functions, а именно utf8_strpos и utf8_substr_count:

function utf8_strpos($haystack, $needle, $offset = 0)
{
    # get substring (if isset offset param)
    $offset = ($offset<0) ? 0 : $offset;
    if ($offset>0)
    {
        preg_match('/^.{' . $offset . '}(.*)/us', $haystack, $dummy);
        $haystack = (isset($dummy[1])) ? $dummy[1] : '';
    }

    # get relative pos
    $p = strpos($haystack, $needle);
    if ($haystack=='' or $p===false) return false;
    $r = $offset;
    $i = 0;

    # calc real pos
    while($i<$p)
    {
        if (ord($haystack[$i])<128)
        {
            # ascii symbol
            $i = $i + 1;
        }
        else
        {
            # non-ascii symbol with variable length
            # (handling first byte)
            $bvalue = decbin(ord($haystack[$i]));       
            $i = $i + strlen(preg_replace('/^(1+)(.+)$/', '', $bvalue));
        }
        $r++;
    }
    return $r;
}

function utf8_substr_count($h, $n)
{
    # preparing $n for using in reg. ex.
    $n = preg_quote($n, '/');

    # select all matches
    preg_match_all('/' . $n . '/u', $h, $dummy);
    return count($dummy[0]);
}

Взято с http://www.controlstyle.ru/

Выложено: 01/10/07