Поиск по сайту Подписаться Реклама
Яндекс.Метрика
Яндекс цитирования
Информационный сайт по аудио и видео
blog o_0 ИгрыКарточная игра Blackjack ManiaEurosport FootballClinicArgon3DRobocop vs. Terminator4x4 BlocksСофтDeliPlayer 2.01NHAL Win32 Emulator 1.0DirectXUninstallerLAN Message Sender 2.1.4YMAMPSimple Popstation GUI 3.00 BetaСтатьиОбзор виджетов обратного звонкаМир азарта и развлечений, сегодня доступен каждому желающемуКомпания Skill On Net выпустила креативный игровой автомат Flip FlapИгровой зал Вулкан: максимум возможностей для гэмблингаЯркие развлечения ждут каждого, кто посетит мир JoyCasinoНемыслимое количество удовольствия и энергия на весь день Вкусное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