Поиск по сайту Подписаться Реклама
Яндекс.Метрика
Яндекс цитирования
Информационный сайт по аудио и видео
blog o_0 ИгрыAge of HeroesMemory FlashKing of Sex CityKatooAmong the clouds3D Worm СофтРулетка в онлайн казиноMacromedia Flash Player 6ePSXe (Enhanced PSX Emulator) 1.6.0.3 под LinuxFCE Ultra 0.98.12EmilNES 0.3.1Happy-BOX: оригинальные смс поздравленияСтатьиИнтересные разновидности онлайн рулеткиОбзор программ для видеомонтажа (2005 г.)Один из самых популярнейших способов развлечений в интернете это виртуальное казиноСовременные виртуальные казино сегодня предлагают клиентам самый разнообразный выбор развлечений, которые позволят стать успешным и перспективным пользователемОсобенности игры в Карибский покерСпособы привлечения игроков в казино Вкусное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