Содержание
UTF
Класс UTF - это служебный класс, который упрощает обработку строк Unicode.
Пространство имен: \
Расположение файла:lib/utf.php
Инициализация
Вернуть экземпляр класса
$utf = \UTF::instance();
Класс UTF использует фабричную оболочку Prefab , поэтому вы можете получить один и тот же экземпляр этого класса в любой точке вашего кода.
Методы
Подобно стандартным строковым методам PHP, все методы класса UTF возвращают смещения, начинающиеся с нуля.
Strlen
Получить длину строки
int strlen ( string $str )
Эта функция возвращает длину заданной строки
Пример:
$utf->strlen('나는 유리를 먹을 수 있어요. 그래도'); // returns 20 (while php strlen returns 48)
stripos
Найти позицию первого вхождения строки без учета регистра
int|FALSE stripos ( string $stack, string $needle [, int $ofs = 0 ] )
Эта функция возвращает позицию первого вхождения $needle строки в $stack строку.Без учета регистра. Возвращает FALSE, если $needle не найден.
Если $ofs указано, поиск будет начинаться с этого количества символов, отсчитываемых от начала строки. Смещение $ofs не может быть отрицательным.
Примеры:
$utf->stripos('Les Naïfs ægithales hâtifs', 'naïfs'); // returns 4 $utf->stripos('Les Naïfs ægithales hâtifs', 'NAÏFS'); // returns 4 $utf->stripos('Les Naïfs ægithales hâtifs', 'NAÏFS', 10); // returns FALSE
strpos
Найти позицию первого вхождения строки с учетом регистра
int|FALSE strpos ( string $stack, string $needle [, int $ofs = 0 [, bool $case = FALSE ]] )
Эта функция возвращает позицию первого вхождения $needle строки в $stack строку.С учетом регистра. Возвращает FALSE, если $needle не найден.
Если $ofs указано, поиск будет начинаться с этого количества символов, отсчитываемых от начала строки. $ofs Смещение не может быть отрицательным.
Если $case установлено TRUE, поиск осуществляется без учета регистра, и функция ведет себя как stripos().
Примеры:
$utf->strpos('Góa ē-tàng Chia̍h Po-lê', 'Góa' ); // returns 0 $utf->strpos('Góa ē-tàng Chia̍h Po-lê', 'Góa', 4 ); // returns FALSE $utf->strpos('Góa ē-tàng Chia̍h Po-lê', 'chia̍h', 0 ); // returns FALSE (case-sensitive) $utf->strpos('Góa ē-tàng Chia̍h Po-lê', 'chia̍h', 0, TRUE ); // returns 11 (case-insensitive)
stristr
Возвращает часть строки $stack от первого появления $needle до конца $stack без учета регистра
string|FALSE stristr ( string $stack, string $needle [, bool $before = FALSE ] )
Эта функция возвращает часть $stack строки, начиная с первого вхождения $needle до конца и включая его $stack. Без учета регистра. Возвращает FALSE, если $needle не найден.
Если в $before установлено значение TRUE, stristr () возвращает часть $stack перед первым вхождением $needle(исключая $needle).
Примеры:
$utf->stristr('Mayia Góa Chàyia̍h Lêh-Pok', 'CHÀYIA̍H' ); // returns 'Chàyia̍h Lêh-Pok' $utf->stristr('Mayia Góa Chàyia̍h Lêh-Pok', 'GóA', TRUE ); // returns 'Mayia '
strstr
Возвращает часть строки $stack от первого появления $needle до конца $stack.
string|FALSE strstr ( string $stack, string $needle [, bool $before = FALSE [, bool $case = FALSE ]] )
Эта функция возвращает часть $stack строки, начиная с первого вхождения $needle до конца $stack.Возвращает FALSE, если $needle не найден.
Если $before установлено значение TRUE, strstr() возвращает часть $stack перед первым вхождением $needle(исключая $needle).
Если $case установлено TRUE, поиск осуществляется без учета регистра, и функция ведет себя как stristr().
Пример:
$email = 'Mïchaño@example.com'; $domain = $utf->strstr($email, '@'); // returns '@example.com' $user = $utf->strstr($email, '@', TRUE); // returns 'Mïchaño'
substr
Вернуть часть строки
string|FALSE substr ( string $str, int $start [, int $length = 0 ] )
Эта функция возвращает часть строки $str, с указаного символа $start ,указаной длины $length. Если $length не указан, будет возвращена подстрока, начинающаяся c $start и до конца строки.
Если $start отрицательное значение, возвращаемая строка будет $start начинаться с символа конца строки $str. Если $str меньше $start символов, будет возвращено FALSE.
Примеры:
$utf->substr('El pingüino Wenceslao hizo kilómetros', 3,8); // returns 'pingüino' $utf->substr('El pingüino Wenceslao hizo kilómetros',-10,4); // returns 'kiló'
substr_count
Подсчитайте количество вхождений подстроки
int substr_count ( string $stack, string $needle )
Эта функция подсчитывает и возвращает количество раз, когда подстрока $needle встречается в строке $stack. Обратите внимание, что $needle чувствительна к регистру.
Примеры:
$utf->substr_count('This is an example as it is', 'is'); // returns 3 $utf->substr_count(implode(array('This','example','as','it')), 'is'); // returns 1 ! PHP BUG ! $arr = array('This','example','as','it'); $utf->substr_count(implode($arr,'is'), 'is'); // returns 4
ltrim
Удаление пробелов в начале строки
string ltrim ( string $str )
Эта функция удаляет пробелы и другие символы (в соответствии с регулярным выражением /[\pZ\pC]+/u) из начала данной строки.
Примеры:
$utf->ltrim("\xe2\x80\x83\x20 WhatAMana!\xc2\xa0\xe1\x9a\x80"); // returns "WhatAMana!\xc2\xa0\xe1\x9a\x80" $utf->ltrim(' invisible leading spaces... '); // returns 'invisible leading spaces... '
rtrim
Удаление пробелов с конца строки
string rtrim ( string $str )
Эта функция удаляет пробелы и другие символы (в соответствии с регулярным выражением /[\pZ\pC]+$/u) с конца данной строки.
Примеры:
$utf->rtrim("\xe2\x80\x83\x20 WhatAMana! \xc2\xa0\xe1\x9a\x80"); // returns "\xe2\x80\x83\x20 WhatAMana!" $utf->rtrim(' invisible trailing spaces... '); // returns ' invisible trailing spaces...'
trim
Удаление пробелов в начале и конце строки
string trim ( string $str )
Эта функция удаляет пробелы и другие символы (в соответствии с регулярным выражением /^[\pZ\pC]+|[\pZ\pC]+$/u) с начала и конца данной строки.
Примеры:
$utf->trim("\xe2\x80\x83\x20 WhatAMana! \xc2\xa0\xe1\x9a\x80"); // returns "WhatAMana!" $utf->trim(' invisible spaces... '); // returns 'invisible spaces...'
bom
Возврат метки порядка байтов UTF-8 ( BOM )
string bom ( )
Возвращает знак порядка байтов ( BOM ) Unicode-символ, используемый для обозначения порядка байтов текстового файла или потока. Символ спецификации также может указывать, в каком из нескольких представлений Unicode закодирован текст. Использование спецификации не является обязательным и, если оно используется, должно появляться в начале текстового потока.
Пример:
$bom = \UTF::instance()->bom(); // $bom = 0xefbbbf echo '0x'.dechex(ord($bom[0])).dechex(ord($bom[1])).dechex(ord($bom[2])); // displays '0xefbbbf' // convert/save a file with a BOM at its beginning $f3->write( $filename, $bom . $f3->read($filename) );
translate
Преобразование кодовых точек в символы Unicode
string translate ( string $str )
Преобразует и возвращает кодовые точки (например, U + 0E8D U + 053D) в эквивалентные символы Unicode (например, ຍ Խ)
emojify
Преобразование токенов эмодзи в символы, поддерживаемые шрифтом Unicode
string emojify ( string $str )
Преобразует и возвращает символы, поддерживаемые шрифтом Unicode, эквивалентные токенам эмодзи.
По умолчанию переведены следующие токены эмодзи:
':(' => '\u2639', // frown ':)' => '\u263a', // smile '<3' => '\u2665', // heart ':D' => '\u1f603', // grin 'XD' => '\u1f606', // laugh ';)' => '\u1f609', // wink ':P' => '\u1f60b', // tongue ':,' => '\u1f60f', // think ':/' => '\u1f623', // skeptic '8O' => '\u1f632', // oops
Пример:
echo \UTF::instance()->emojify('Thanks :) I <3'); // displays 'Thanks ☺ I ♥'
Имейте в виду, что вам нужен шрифт, поддерживающий эти символы, чтобы они правильно отобразились на страницах вашего браузера.
Вы можете указать свои собственные дополнительные токены эмодзи с помощью системной переменной EMOJI . При наличии, эти токены эмодзи добавляются к базовому набору выше и будут использоваться при переводе строки в символы, поддерживаемые шрифтом Unicode.
Примеры:
$f3->set('EMOJI', array('(c)' => '©', '?' => '¿') ); echo \UTF::instance()->emojify( 'Do you like (c)opyrights ??'); // displays 'Do you like ©opyrights ¿¿' // $f3->set('EMOJI', array('@om' => '\U0F00', '&oooooom' => '\U0F02', '%om' => '\U0F00') ); echo \UTF::instance()->emojify( '@om Greets &oooooom from Tibet %om'); // displays 'ༀ Greets ༂ from Tibet ༀ'
Как видите, определять токены эмодзи нужно только вам. Вы даже можете представить себе автоматизацию вызова функции emojify для переменных, которые вы используете в своих шаблонах.