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)' => '&#169;', '?' => '&#191') );
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 для переменных, которые вы используете в своих шаблонах.

Печать/экспорт