Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

UTF8: PHP класс для обработки текста в кодировке UTF-8 (Rin)
На страницу 1, 2, 3  След.
Автор Сообщение
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Вс Авг 14, 2005 10:11 pm (написано за 1 час 22 минуты 15 секунд)
   Заголовок сообщения: UTF8: PHP класс для обработки текста в кодировке UTF-8
Ответить с цитатой

A package of PHP functions to manipulate strings encoded in UTF-8.
The powerful solution/contribution for UTF-8 support in your CMF/CMS, written on PHP.
This package IMHO better then PHP UTF-8, http://sourceforge.net/projects/phputf8.

Поддержка UTF-8 в PHP 5.
Набор (сборник, библиотека, склад, репозиторий) PHP функций для разработчиков веб-сайтов, использующих кодировку UTF-8

Преимущества использования этого класса:
  1. почти все функции могут работать без расширения ICONV и MBSTRING (если они есть, то активно используются)
  2. унифицированный интерфейс
  3. полезные функции, отсутствующие в ICONV и MBSTRING
.
Интерфейс класса
Код (php): скопировать код в буфер обмена
/**
 * Remove combining diactrical marks, with possibility of the restore
 * Удаляет диакритические знаки в тексте, с возможностью восстановления (опция)
 *
 * @param   string|null       $s
 * @param   array|null        $additional_chars   for example: "\xc2\xad"  #soft hyphen = discretionary hyphen
 * @param   bool              $is_can_restored
 * @param   array|null        $restore_table
 * @return  string|null|bool  returns FALSE if error occured
 */

public static function diactrical_remove($s, $additional_chars = null, $is_can_restored = false, &$restore_table = null);

/**
 * Restore combining diactrical marks, removed by self::diactrical_remove()
 * Восстанавливает диакритические знаки в тексте, при условии, что их символьные позиции и кол-во символов не изменились!
 *
 * @see     self::diactrical_remove()
 * @param   string|null       $s
 * @param   array             $restore_table
 * @return  string|null|bool  returns FALSE if error occured (broken $restore_table)
 */

public static function diactrical_restore($s, $restore_table);

/**
 * Функция для перекодировки данных произвольной структуры из какой-либо кодировки в кодировку UTF-8.
 *
 * @param   array|scalar|null  $data
 * @param   string             $charset
 * @return  array|scalar|null  returns FALSE if error occured
 */

public static function convert_from($data, $charset = 'cp1251');

/**
 * Функция для перекодировки данных произвольной структуры из кодировки UTF-8 в другую кодировку.
 *
 * @param   array|scalar|null  $data
 * @param   string             $charset
 * @return  array|scalar|null  returns FALSE if error occured
 */

public static function convert_to($data, $charset = 'cp1251');

/**
 * Strips out device control codes in the ASCII range.
 *
 * @param   string|null       string to clean
 * @return  string|null|bool  returns FALSE if error occured
 */

public static function strict($s);

/**
 * Проверка данных на принадлежность классу символов ASCII
 * Для значений null, integer, float, boolean возвращает TRUE.
 *
 * Массивы обходятся рекурсивно, если в хотябы одном элементе массива
 * его значение не ASCII, возвращается FALSE.
 *
 * @param   array|scalar|null  $data
 * @return  bool
 */

public static function is_ascii($data);

/**
 * Returns true if data is valid UTF-8 and false otherwise.
 * Для значений null, integer, float, boolean возвращает TRUE.
 *
 * Массивы обходятся рекурсивно, если в хотябы одном элементе массива
 * его значение не в кодировке UTF-8, возвращается FALSE.
 *
 * @link    http://www.w3.org/International/questions/qa-forms-utf-8.html
 * @link    http://ru3.php.net/mb_detect_encoding
 * @link    http://webtest.philigon.ru/articles/utf8/
 * @link    http://unicode.coeurlumiere.com/
 * @param   array|scalar|null  $data
 * @param   bool               $is_strict  строгая проверка диапазона ASCII?
 * @return  bool
 */

public static function is_utf8($data, $is_strict = true);

/**
 * Check the data in UTF-8 charset on given ranges of the standard UNICODE.
 * The suitable alternative to regular expressions.
 *
 * Для значений null, integer, float, boolean возвращает TRUE.
 *
 * Массивы обходятся рекурсивно, если в хотябы одном элементе массива
 * его значение не прошло проверку, возвращается FALSE.
 *
 * Examples:
 *   #A simple check the standard named ranges:
 *   UTF8::blocks_check('поисковые системы Google и Yandex', array('Basic Latin', 'Cyrillic'));
 *   #You can check the named, direct ranges or codepoints together:
 *   UTF8::blocks_check('поисковые системы Google и Yandex', array(array(0x20, 0x7E),     #[\x20-\x7E]
 *                                                                 array(0x0410, 0x044F), #[A-Яa-я]
 *                                                                 0x0401, #russian yo (Ё)
 *                                                                 0x0451, #russian ye (ё)
 *                                                                 'Arrows',
 *                                                                ));
 *
 * @link    http://www.unicode.org/charts/
 * @param   array|scalar|null  $data
 * @param   array              $blocks
 * @return  bool               Возвращает TRUE, если все символы из текста принадлежат указанным диапазонам
 *                             и FALSE в противном случае или для разбитого UTF-8.
 */

public static function blocks_check($data, $blocks);

/**
 * Перекодирует значения элементов массивов $_GET, $_POST, $_COOKIE, $_REQUEST, $_FILES из кодировки $charset в UTF-8, если необходимо.
 * Побочным положительным эффектом является защита от XSS атаки с непечатаемыми символами на уязвимые PHP функции.
 * Т.о. веб-формы можно посылать на сервер в 2-х кодировках: $charset и UTF-8.
 * Параметры для тестирования: ?тест[тест]=тест (можно просто дописать в адресную строку браузера IE >= 5.x)
 *
 * Алгоритм работы:
 * 1) Функция проверяет массивы $_GET, $_POST, $_COOKIE, $_REQUEST, $_FILES
 *    на корректность значений элементов кодировке UTF-8.
 * 2) Значения не в UTF-8 принимаются как $charset и конвертируется в UTF-8,
 *    при этом байты от 0x00 до 0x7F (ASCII) сохраняются как есть.
 * 3) Сконвертированные значения снова проверяются.
 *    Если данные опять не в кодировке UTF-8, то они считаются разбитыми и функция возвращает FALSE.
 *
 * ЗАМЕЧАНИЕ
 *   Функция должна вызываться после self::unescape_request()!
 *
 * @see     self::unescape_request()
 * @param   bool    $is_hex2bin  Декодировать HEX-данные?
 *                               Пример: 0xd09ec2a0d0bad0bed0bcd0bfd0b0d0bdd0b8d0b8 => О компании
 *                               Параметры в URL адресах иногда бывает удобно кодировать не функцией rawurlencode(),
 *                               а использовать следующий механизм (к тому же кодирующий данные более компактно):
 *                               '0x' . bin2hex($string)
 * @param   string  $charset
 * @return  bool                 Возвращает TRUE, если все значения элементов массивов в кодировке UTF-8
 *                               и FALSE + E_USER_WARNING в противном случае.
 */

public static function autoconvert_request($is_hex2bin = false, $charset = 'cp1251');

/**
 * Implementation strcasecmp() function for UTF-8 encoding string.
 *
 * @param   string|null    $s1
 * @param   string|null    $s2
 * @return  int|bool|null  Returns FALSE if error occured
 *                         Returns < 0 if $s1 is less than $s2;
 *                                 > 0 if $s1 is greater than $s2;
 *                                 0 if they are equal.
 */

public static function casecmp($s1, $s2);

/**
 * Converts a UTF-8 character to a UNICODE codepoint
 *
 * @param   string|null    $char  UTF-8 character
 * @return  int|bool|null         Unicode codepoint
 *                                Returns FALSE if $char broken (not UTF-8)
 */

public static function ord($char); # = UTF8::to_unicode() or unicode_from_utf8()

/**
 * Converts a UNICODE codepoint to a UTF-8 character
 *
 * @param   int|digit|null  $cp  Unicode codepoint
 * @return  string|null          UTF-8 character
 */

public static function chr($cp); # = from_unicode() or unicode_to_utf8()

/**
 * Implementation chunk_split() function for UTF-8 encoding string.
 *
 * @param   string|null       $s
 * @param   int|digit         $length
 * @param   string            $glue
 * @return  string|bool|null  returns FALSE if error occured
 */

public static function chunk_split($s, $length = null, $glue = null);

/**
 * Конвертирует регистр букв в строке в кодировке UTF-8
 *
 * @link     http://www.unicode.org/charts/PDF/U0400.pdf
 * @link     http://ru.wikipedia.org/wiki/ISO_639-1
 * @param    scalar|null   $s     строка
 * @param    int           $mode  {CASE_LOWER|CASE_UPPER}
 * @return   scalar|null   returns FALSE if error occured
 */

public static function convert_case($s, $mode);

/**
 * @param   scalar|null  $s
 * @return  scalar|null  returns FALSE if error occured
 */

public static function lowercase($s);

/**
 * @param   scalar|null  $s
 * @return  scalar|null  returns FALSE if error occured
 */

public static function uppercase($s);

/**
 * Convert all HTML entities to native UTF-8 characters
 * Функция декодирует гораздо больше именованных сущностей, чем стандартная html_entity_decode()
 * Все dec и hex сущности так же переводятся в UTF-8.
 *
 * Example: '&quot;' or '&#34;' or '&#x22;' will be converted to '"'.
 *
 * @link    http://www.htmlhelp.com/reference/html40/entities/
 * @link    http://www.alanwood.net/demos/ent4_frame.html (HTML 4.01 Character Entity References)
 * @link    http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset1.asp?frame=true
 * @link    http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset2.asp?frame=true
 * @link    http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset3.asp?frame=true
 * @param   scalar|null  $s
 * @param   bool         $is_htmlspecialchars   обрабатывать специальные html сущности? (&lt; &gt; &amp; &quot;)
 * @return  scalar|null  returns FALSE if error occured
 */

public static function html_entity_decode($s, $is_htmlspecialchars = false);

/**
 * Convert special UTF-8 characters to HTML entities.
 * Функция кодирует гораздо больше именованнvх сущностей, чем стандартная htmlentities()
 *
 * @link    http://www.htmlhelp.com/reference/html40/entities/
 * @link    http://www.alanwood.net/demos/ent4_frame.html (HTML 4.01 Character Entity References)
 * @link    http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset1.asp?frame=true
 * @link    http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset2.asp?frame=true
 * @link    http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset3.asp?frame=true
 * @param   scalar|null  $s
 * @return  scalar|null  returns FALSE if error occured
 */

public static function html_entity_encode($s);

/**
 * Call preg_match_all() and convert byte offsets into character offsets for PREG_OFFSET_CAPTURE flag.
 * This is regardless of whether you use /u modifier.
 *
 * @param   string           $pattern
 * @param   string|null      $subject
 * @param   array            $matches
 * @param   int              $flags
 * @param   int              $char_offset
 * @return  array|null|bool  returns FALSE if error occured
 */

public static function preg_match_all($pattern, $subject, &$matches, $flags = PREG_PATTERN_ORDER, $char_offset = 0);

/**
 * Обрезает текст в кодировке UTF-8 до заданной длины,
 * причём последнее слово показывается целиком, а не обрывается на середине.
 * Html сущности корректно обрабатываются.
 *
 * @param   string|null     $s                текст в кодировке UTF-8
 * @param   int|null|digit  $maxlength        ограничение длины текста
 * @param   string          $continue         завершающая строка, которая будет вставлена после текста, если он обрежется
 * @param   bool|null       &$is_cutted       текст был обрезан?
 * @param   int|digit       $tail_min_length  если длина "хвоста", оставшегося после обрезки текста, меньше $tail_min_length,
 *                                            то текст возвращается без изменений
 * @return  string|null|bool                  returns FALSE if error occured
 */

public static function str_limit($s, $maxlength = null, $continue = "\xe2\x80\xa6", &$is_cutted = null, $tail_min_length = 20); #"\xe2\x80\xa6" = "&hellip;"

/**
 * Implementation str_split() function for UTF-8 encoding string.
 *
 * @param   string|null      $s
 * @param   int|null|digit   $length
 * @return  array|null|bool  returns FALSE if error occured
 */

public static function str_split($s, $length = null);

/**
 * Implementation strlen() function for UTF-8 encoding string.
 *
 * @param   string|null    $s
 * @return  int|null|bool  returns FALSE if error occured
 */

public static function strlen($s);

/**
 * Implementation strpos() function for UTF-8 encoding string
 *
 * @param   string|null    $s       The entire string
 * @param   string|int     $needle  The searched substring
 * @param   int|null       $offset  The optional offset parameter specifies the position from which the search should be performed
 * @return  int|null|bool           Returns the numeric position of the first occurrence of needle in haystack.
 *                                  If needle is not found, self::strpos() will return FALSE.
 */

public static function strpos($s, $needle, $offset = null);

/**
 * Implementation strrev() function for UTF-8 encoding string
 *
 * @param   string|null       $s
 * @return  string|null|bool  returns FALSE if error occured
 */

public static function strrev($s);

/**
 * Implementation substr() function for UTF-8 encoding string.
 *
 * @link     http://www.w3.org/International/questions/qa-forms-utf-8.html
 * @param    string|null       $s
 * @param    int|digit         $offset
 * @param    int|null|digit    $length
 * @param    bool              $in_cycle  speed improve for calling this method in cycles with the same $str and different $offset/$length!
 * @return   string|null|bool             returns FALSE if error occured
 */

public static function substr($s, $offset, $length = null, $in_cycle = false);

/**
 * Implementation substr_replace() function for UTF-8 encoding string.
 *
 * @param   string|null       $s
 * @param   string|int        $replacement
 * @param   int|digit         $start
 * @param   int|null          $length
 * @return  string|null|bool  returns FALSE if error occured
 */

public static function substr_replace($s, $replacement, $start, $length = null);

/**
 * Implementation ucfirst() function for UTF-8 encoding string.
 * Преобразует первый символ строки в кодировке UTF-8 в верхний регистр.
 *
 * @param   string|null       $s
 * @param   bool              $is_other_to_lowercase  остальные символы преобразуются в нижний регистр?
 * @return  string|null|bool  returns FALSE if error occured
 */

public static function ucfirst($s, $is_other_to_lowercase = true);

/**
 * Implementation ucwords() function for UTF-8 encoding string.
 * Преобразует в верхний регистр первый символ каждого слова в строке в кодировке UTF-8,
 * остальные символы каждого слова преобразуются в нижний регистр.
 * Эта функция считает словами последовательности символов, разделенных пробелом, переводом строки, возвратом каретки, горизонтальной табуляцией, неразрывным пробелом.
 *
 * @param   string|null       $s
 * @param   bool              $is_other_to_lowercase  остальные символы преобразуются в нижний регистр?
 * @return  string|null|bool  returns FALSE if error occured
 */

public static function ucwords($s, $is_other_to_lowercase = true);

/**
 * Функция декодирует строку в формате %uXXXX или %u{XXXXXX} в строку формата UTF-8.
 *
 * Функция используется для декодирования данных типа "%u0442%u0435%u0441%u0442",
 * закодированных устаревшей функцией javascript://encode().
 * Рекомендуется использовать функцию javascript://encodeURIComponent().
 *
 * ЗАМЕЧАНИЕ
 * Устаревший формат %uXXXX позволяет использовать юникод только из диапазона UCS-2, т.е. от U+0 до U+FFFF
 *
 * @param   scalar|null|array  $data
 * @param   bool               $is_rawurlencode
 * @return  scalar|null|array  returns FALSE if error occured
 */

public static function unescape($data, $is_rawurlencode = false);

/**
 * 1) Корректирует глобальные массивы $_GET, $_POST, $_COOKIE, $_REQUEST
 *    декодируя значения в юникоде "%uXXXX" и %u{XXXXXX}, закодированные, например, через устаревшую функцию javascript escape()
 *    Cтандартный PHP 5.2.x этого делать не умеет.
 * 2) Если в HTTP_COOKIE есть параметры с одинаковым именем, то берётся последнее значение,
 *    а не первое (так обрабатывается QUERY_STRING).
 * 3) Создаёт массив $_POST для нестандартных Content-Type, например, "Content-Type: application/octet-stream".
 *    Стандартный PHP 5.2.x создаёт массив только для "Content-Type: application/x-www-form-urlencoded" и "Content-Type: multipart/form-data".
 *
 * @return  void
 */

public static function unescape_request();

/**
 * Вычисляет высоту области редактирования текста (<textarea>) по значению и ширине.
 *
 * В большинстве случаев будет корректно работать для моноширинных шрифтов.
 * Т.к. браузер переносит последнее слово, которое не умещается на строке,
 * на следующую строку, высота м.б. меньше ожидаемой.
 * Этот алгоритм явл. простым (и быстрым) и не отслеживает переносы слов.
 *
 * @param   string|null     $s         текст
 * @param   int|digit       $cols      ширина области редактирования (колонок)
 * @param   int|digit       $min_rows  минимальное кол-во строк
 * @param   int|digit       $max_rows  максимальное кол-во строк
 * @return  int|null|bool
 */

public static function textarea_rows($s, $cols, $min_rows = 3, $max_rows = 32);

/**
 * @param   string|null       $s
 * @param   string|null       $charlist
 * @return  string|null|bool
 */

public static function ltrim($s, $charlist = null);

/**
 * @param   string|null       $s
 * @param   string|null       $charlist
 * @return  string|null|bool
 */

public static function rtrim($s, $charlist = null);

/**
 * @param   scalar|null  $s
 * @param   string|null  $charlist
 * @return  scalar|null
 */

public static function trim($s, $charlist = null);

/**
 * @param   string|null       $s
 * @param   int|digit         $length
 * @param   string            $pad_str
 * @param   int               $type     STR_PAD_LEFT, STR_PAD_RIGHT or STR_PAD_BOTH
 * @return  string|null|bool
 */

public static function str_pad($s, $length, $pad_str = ' ', $type = STR_PAD_RIGHT);

/**
 * @param   string    $str
 * @param   string    $mask
 * @param   int|null  $start
 * @param   int|null  $length
 * @return  int|bool
 */

public static function strspn($str, $mask, $start = null, $length = null);

        /**
         * Перекодирует текстовые файлы в указанной папке в кодировку UTF-8
         * При обработке пропускаются бинарные файлы, файлы в кодировке UTF-8 и файлы, которые перекодировать не удалось.
         * Т. о. метод работает достаточно надёжно.
         *
         * @param   string       $dir             директория для сканирования
         * @param   string|null  $files_re        регул. выражение для шаблона имён файлов,
         *                                        например: '~\.(?:txt|sql|php|pl|py|sh|tpl|xml|xsl|html|xhtml|phtml|htm|js|json|css|conf|cfg|ini|htaccess)$~sSX'
         * @param   bool         $is_recursive    обрабатывать вложенные папки и файлы?
         * @param   string       $charset         исходная кодировка
         * @param   string|null  $dirs_ignore_re  регул. выражение для исключения папок из обработки
         *                                        например: '~^(?:cache|images?|photos?|fonts?|img|ico|\.svn|\.hg|\.cvs)$~siSX'
         * @param   bool         $is_echo         печать имён обработанных файлов и статус обработки в выходной поток?
         * @param   bool         $is_simulate     сымитировать работу без реальной перезаписи файлов?
         * @return  int|bool                      возвращает кол-во перекодированных файлов
         *                                        returns FALSE if error occured
         */

        public static function convert_files_from(
                $dir,
                $files_re = null,
                $is_recursive = true,
                $charset = 'cp1251',
                $dirs_ignore_re = null,
                $is_echo = false,
                $is_simulate = false);

        /**
         *
         * @param   int|string  $low
         * @param   int|string  $high
         * @param   int         $step
         * @return  array|bool         returns FALSE if error occured
         */

        public static function range($low, $high, $step = 1);

        /**
         *
         * @param   string|null       $str
         * @param   string|array      $from
         * @param   string|null       $to
         * @return  string|bool|null         returns FALSE if error occured
         */

        public static function strtr($s, $from, $to = null);
Возможно, Вам будут интересны мои другие готовые решения:
You may be interested in my other ready-made solutions:
  1. Db
  2. WordsFakeFix
  3. Yoficator
  4. TextParser
  5. FileCache
  6. PHP_MergePostFiles
  7. Table
  8. PHPTemplate
  9. Optimize
  10. Password



UTF8-2.1.1.7z
 Описание:
PHP класс для обработки текста в кодировке UTF-8

Скачать
 Имя файла:  UTF8-2.1.1.7z
 Размер:  61,17 KB
 Скачали:  6458 раз(а)



Последний раз редактировалось: Rin (Пн Июл 19, 2010 11:33 am), всего редактировалось 79 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пт Июн 15, 2007 12:05 pm (спустя 1 год 10 месяцев 13 часов 53 минуты; написано за 59 секунд)
   Заголовок сообщения:
Ответить с цитатой

Все функции для работы с UTF-8 собраны в один архив.

Последний раз редактировалось: Rin (Пн Авг 03, 2009 10:14 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Июл 16, 2007 2:05 pm (спустя 1 месяц 1 день 1 час 59 минут; написано за 25 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2007-07-16.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Сб Сен 08, 2007 12:52 pm (спустя 1 месяц 22 дня 22 часа 46 минут; написано за 9 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2007-09-08.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
iceman
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Чт Окт 11, 2007 8:12 pm (спустя 1 месяц 3 дня 7 часов 20 минут; написано за 28 секунд)
   Заголовок сообщения:
Ответить с цитатой

в архиве чето нету файла php2js.php

а в списке указан..
Вернуться к началу
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пт Окт 12, 2007 11:06 am (спустя 14 часов 53 минуты; написано за 18 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2007-10-12. (+ php2js.php)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Сб Окт 20, 2007 4:13 pm (спустя 8 дней 5 часов 7 минут; написано за 17 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2007-10-20. (+ hyphen_words.php)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Окт 22, 2007 5:10 pm (спустя 2 дня 56 минут; написано за 19 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2007-10-22. (+ utf8_autoconvert_request_charset.php)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Ноя 12, 2007 12:01 pm (спустя 20 дней 18 часов 50 минут; написано за 2 минуты 45 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2007-11-12.
  1. html_template() -- Если имя метки-заменителя начинается с _SERVER или _REQUEST, то применяется htmlspecialchars($string); добавлены методы .intval() и .floatval()
  2. utf8_str_limit() -- Если текст содержит HTML код, теперь он НЕ вырезается автоматически
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






Карма: 367
   поощрить/наказать


СообщениеДобавлено: Пн Ноя 19, 2007 6:51 am (спустя 6 дней 18 часов 49 минут; написано за 23 секунды)
   Заголовок сообщения:
Ответить с цитатой

Огромное спасибо! Реально нужные вещи....
Вернуться к началу
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Ноя 19, 2007 10:17 am (спустя 3 часа 26 минут; написано за 1 минуту 4 секунды)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2007-11-19.
  1. utf8_autoconvert_request_charset() -- добавлена перекодировка массива $_FILES.
    Кстати, побочным положительным эффектом функции является защита от XSS атаки с непечатаемыми символами на уязвимые PHP функции.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






Карма: 367
   поощрить/наказать


СообщениеДобавлено: Пт Dec 14, 2007 9:55 am (спустя 24 дня 23 часа 38 минут; написано за 1 минуту)
   Заголовок сообщения:
Ответить с цитатой

Ну ребята....
Да у вас тут кладезь мудростей прям!!!!
Огромное спасибо!!!
Главное идея ;)
Вернуться к началу
Гость






Карма: 367
   поощрить/наказать


СообщениеДобавлено: Вт Янв 08, 2008 10:19 am (спустя 25 дней 23 минуты; написано за 16 секунд)
   Заголовок сообщения:
Ответить с цитатой

Большое спасибо!
Вернуться к началу
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Чт Фев 21, 2008 5:03 pm (спустя 1 месяц 13 дней 6 часов 43 минуты; написано за 7 минут 47 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2008-02-21.
Из того, что вспомнил:
  1. censure() -- новая версия антиматного фильтра
  2. cp1251_to_utf8_recursive() -- новая функция
  3. html_template() -- теперь пустые таги автоматически не вырезаются
  4. hyphen_words() -- добавлена обработка слов со знаком ударения
  5. is_utf8() -- добавлен второй параметр $is_strict (строгая проверка диапазона ASCII?)
  6. strip_tags_smart() -- корректная обработка внутри тагов <pre></pre>
  7. utf8_autoconvert_request_charset() -- добавлен параметр $is_hex2bin (Декодировать HEX-данные типа 0xd09ec2a0d0bad0be?)
  8. utf8_check() -- добавлен второй параметр $is_strict (строгая проверка диапазона ASCII?)
  9. utf8_strlen() -- оптимизация


Последний раз редактировалось: Rin (Пт Фев 22, 2008 4:02 pm), всего редактировалось 3 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Maus
Модератор



Зарегистрирован: 29.06.2003
Сообщ.: 7410
Карма: 242
   поощрить/наказать

Откуда: пос. Омсукчан Магаданской области

СообщениеДобавлено: Чт Фев 21, 2008 9:50 pm (спустя 4 часа 47 минут; написано за 18 секунд)
   Заголовок сообщения:
Ответить с цитатой

Rin
Мм, а можно более информативный комментарий?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
eternalko
Участник форума



Зарегистрирован: 06.01.2008
Сообщ.: 28
Карма: 0
   поощрить/наказать


СообщениеДобавлено: Ср Мар 26, 2008 4:23 pm (спустя 1 месяц 4 дня 18 часов 33 минуты; написано за 25 секунд)
   Заголовок сообщения:
Ответить с цитатой

Супер!
Только бы комментарии поинформативней (:
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пт Апр 25, 2008 1:14 pm (спустя 29 дней 20 часов 51 минуту; написано за 1 минуту 45 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2008-04-25
  1. html_words_highlight() исправлена ошибка, добавлена оптимизация
  2. utf8_convert_case() исправлена ошибка
  3. php2js() символ квотирования по умолчанию -- двойная кавычка вместо одинарной (стандарт JSON)
  4. strip_tags_smart() Пробелы и переносы строк форматируется по-умолчанию.
    Чтобы исключить форматирование, необходимо установить параметр $is_format_spaces = FALSE.
  5. ucs2_to_utf8() Новая функция. Преобразует строку из кодировки UCS-2 в UTF-8, без использования iconv (основной PHP-код -- Юрий Насретдинов)
  6. utf8_unescape() Функция может работать без использования библиотеки iconv.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Shulman Alexandr (Lex)
Заглянувший



Зарегистрирован: 20.05.2008
Сообщ.: 4
Карма: 1
   поощрить/наказать


СообщениеДобавлено: Чт Мая 22, 2008 2:51 pm (спустя 27 дней 1 час 37 минут; написано за 15 секунд)
   Заголовок сообщения:
Ответить с цитатой

спасибо за подборку. хорошая баблиотека
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
cevek
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Ср Июн 04, 2008 12:39 pm (спустя 12 дней 21 час 47 минут; написано за 5 секунд)
   Заголовок сообщения: utf8_strpos
Ответить с цитатой

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+)(.+)$/', '\1', $bvalue));
         }
         $r++;
      }
      return $r;
   }
Вернуться к началу
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Чт Июн 05, 2008 1:03 pm (спустя 1 день 24 минуты; написано за 36 секунд)
   Заголовок сообщения:
Ответить с цитатой

cevek

:-)
Код (php): скопировать код в буфер обмена
function utf8_strpos($haystack, $needle, $offset = null)
{
    if ($offset === null or $offset < 0) $offset = 0;
    if (function_exists('mb_strpos')) return mb_strpos($haystack, $needle, $offset, 'utf-8');
    if (function_exists('iconv_strpos')) return iconv_strpos($haystack, $needle, $offset, 'utf-8');
    if (! function_exists('utf8_strlen')) include_once 'utf8_strlen.php';
    $byte_pos = $offset;
    do if (($byte_pos = strpos($haystack, $needle, $byte_pos)) === false) return false;
    while (($char_pos = utf8_strlen(substr($haystack, 0, $byte_pos++))) < $offset);
    return $char_pos;
}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Чт Июн 05, 2008 5:52 pm (спустя 4 часа 48 минут; написано за 1 минуту 55 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2008-06-05
  1. Func.php -- Добавлен класс-загрузчик
  2. utf8_strpos() -- Добавлена новая функция
  3. censure() -- Добавлено исключение для слова "Hyundai" :)
  4. utf8_str_limit() -- Если длина "хвоста", оставшегося после обрезки текста, меньше $tail_min_length, то текст возвращается без изменений
  5. strip_tags_smart() -- Улучшена обработка ошибок функций preg_*()
  6. html_words_highlight() -- Исправлена ошибка
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Bolzamo
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Ср Июн 11, 2008 4:18 pm (спустя 5 дней 22 часа 26 минут; написано за 3 минуты 18 секунд)
   Заголовок сообщения: Косяк
Ответить с цитатой

Жесть вообще!
Архив про UTF-8, а все комментарии на русском языке в кодировке cp1251!
Да и RAR-архиватор для Open Source-подборки - нонсенс! Мне очень понравилась подборка сама по себе, авторы молодцы и очень постарались, но в GNU/Linux мне трудно с ней работать, потому как в редакторе по умолчанию стоит юникод, а добиваться поддержки rar-архивов пришлось скачиванием дополнительного софта.

Взываю к вам! Используйте юникод в комментариях и открытые архиваторы(zip,gz,bz2,7z).
Вернуться к началу
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Вт Июн 17, 2008 10:36 am (спустя 5 дней 18 часов 17 минут; написано за 1 минуту 20 секунд)
   Заголовок сообщения:
Ответить с цитатой

Мне так было удобнее.
А у Вас есть время перевести все комментарии на английский? :)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
БорисК
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Ср Июн 18, 2008 11:51 am (спустя 1 день 1 час 14 минут; написано за 2 минуты 22 секунды)
   Заголовок сообщения: сравнительные тесты
Ответить с цитатой

utf8_substr($str, 0, 1000) работает 0.011384 секунд
preg_match("/^.{1000}/su", $str, $matches) - 0.000136
mb_substr - 0.000048
substr (неправильно считает длину и обрезает полсимвола) - 0.000008
iconv_substr - 0.057839
Вернуться к началу
БориК
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Ср Июн 18, 2008 5:03 pm (спустя 5 часов 12 минут)
   Заголовок сообщения: еще два варианта utf8_substr
Ответить с цитатой

/**
 * Функция для быстрого примерного(!) отрезания строки в кодировке utf-8
 * только для 2хбайтной кодировки, но после небольшой доработки будет работать и с 3-4хбайтной
 *
 * substr работает только с однобайтными кодировками, поэтому
 * - неправильно отрезает utf8-строку (в байтах, а не символах)
 * учитывая, что русские символы занимают 2 байта, латинские, пробел, вводимые с клавиатуры спецсимволы - 1 байт,
 * то опытным путем подбирается примерный коэффициент 1.8
 * - последний символ может случайно отрезаться частично. Поэтому проверяем, если его код 11xxxxxx (0xC0) - отрезаем его тоже.
 *
 * Зато работает значительно быстрее любой другой функции отрезания utf-8, даже встроенных!
 * Примерный результат теста на shared-хостинге с PHP5 при $length = 1000 и длине входного текста (статья на русском языке) = 5000 символов:
 * utf8_fast_approx_substr (эта функция) - 0.000018 секунды (+ 0.000020 секунды собственно на вызов этой функции)
 * mb_substr (только при установленном пакете MultiByte) - 0.000048 секунды
 * utf8_fast_substr - 0.000126 секунды (+ 0.000020 секунды собственно на вызов этой функции)
 * utf8_substr - 0.011364 секунды (+ 0.000020 секунды собственно на вызов этой функции)
 * iconv_substr (только при установленном пакете Iconv) - 0.057839 секунды
 *
 * @param string $string входная строка в кодировке utf-8
 * @param int $start начальное смещение
 * Если start неотрицателен, возвращаемая подстрока начинается с позиции start от начала строки, считая от нуля.
 * Например, в строке 'abcdef', в позиции 0 находится символ 'a', в позиции 1 - символ 'b', и т.д.
 * Если start отрицательный, возвращаемая подстрока начинается с start символа с конца строки string.
 * Например, в строке 'abcdef', в позиции -1 находится символ 'f', в позиции -2 - символ 'e', и т.д.
 * Если длина строки string меньше или равна start символов, возвращается FALSE.
 * @param int $length длина
 * Если length положительный, то от start будет отсчитано примерно length символов, а последующие отрезаны.
 * Если length отрицательный, то будет отброшено примерно length символов с конца строки string.
 * Если при этом позиция начала подстроки, определяемая аргументом start, находится в отброшенной части строки, возвращается пустая строка.
 *
 * @return string/boolean
 *
 * @author Boris Korobkov
 * @link http://www.ajaxforum.ru/
 */
function utf8_fast_approx_substr($string, $start, $length = null)
{
    if (function_exists('mb_substr'))
    {
        /* только при установленном пакете MultiByte. mb_substr хоть и медленней этой функции, но зато точнее */
        return mb_substr($string, $offset, $length, 'utf-8');
    }
    
    $string = substr($string, (int) $start * 1.8, (int) $length * 1.8);
    
    /* если последний байт = полсимвола utf-8, удалить его */
    if (ord(substr($string, -1)) & 0xC0)
    {
        $string = substr($string, 0, -1);
    }
    return $string;

}

/**
 * Функция для быстрого отрезания конца строки в кодировке utf-8
 *
 * Примерный результат теста на shared-хостинге с PHP5 при $length = 1000 и длине входного текста (статья на русском языке) = 5000 символов:
 * utf8_fast_approx_substr - 0.000018 секунды (+ 0.000020 секунды собственно на вызов этой функции)
 * mb_substr (только при установленном пакете MultiByte) - 0.000048 секунды
 * utf8_fast_substr (эта функция) - 0.000126 секунды (+ 0.000020 секунды собственно на вызов этой функции)
 * utf8_substr - 0.011364 секунды (+ 0.000020 секунды собственно на вызов этой функции)
 * iconv_substr (только при установленном пакете Iconv) - 0.057839 секунды
 * *
 * @param string $string входная строка в кодировке utf-8
 * @param int $length длина (положительная)
 *
 * @return string
 *
 * @author Boris Korobkov
 * @link http://www.ajaxforum.ru/
 */
function utf8_fast_substr($string, $length)
{
    if (function_exists('mb_substr'))
    {
        /* только при установленном пакете MultiByte. mb_substr быстрее этой функции */
        return mb_substr($string, 0, $length, 'utf-8');
    }
    
    $pcre = sprintf("/^.{%s}/su", $length);
    $matches = array (
    );
    if (preg_match($pcre, $string, $matches))
    {
        return $matches[0];
    } else
    {
        return $string;
    }

}
Вернуться к началу
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Чт Июн 19, 2008 1:53 pm (спустя 20 часов 49 минут; написано за 2 минуты 57 секунд)
   Заголовок сообщения:
Ответить с цитатой

БориК

Насколько я помню, в библиотеке PCRE было ограничение на кол-во повторов в 65535 символов.
Попробуйте отрезать рег. выражением первые 70,000 символов: /^.{70000}/su

Ваша функция не совместима по параметрам с substr() и utf8_substr() из архива.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
БорисК
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Ср Июн 25, 2008 4:37 pm (спустя 6 дней 2 часа 44 минуты; написано за 37 секунд)
   Заголовок сообщения:
Ответить с цитатой

Да, есть ограничение на 64К. Да, другие параметры. И что?
Вернуться к началу
Гость






Карма: 367
   поощрить/наказать


СообщениеДобавлено: Чт Июл 10, 2008 7:01 pm (спустя 15 дней 2 часа 23 минуты; написано за 39 секунд)
   Заголовок сообщения:
Ответить с цитатой

<?php
Func::setPath(dirname(__FILE__) . '/func/');

$s = Func::call('html_optimize', $s); # PHP < 5.3.0
$s = Func::html_optimize($s); # PHP >= 5.3.0

Func::load('utf8_str_limit', 'strip_tags_smart');
$s = utf8_str_limit(strip_tags_smart($s), 100, null, $is_cutted);
?>


Вот так делаю, а н функцию главную не может найти. Что делать?
Вернуться к началу
Стасон
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Вт Авг 26, 2008 9:57 am (спустя 1 месяц 15 дней 14 часов 56 минут; написано за 23 секунды)
   Заголовок сообщения: супер
Ответить с цитатой

Пока просто скачал. Попробую, если работает, то огромное спасибо.
Вернуться к началу
beerman
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Чт Авг 28, 2008 6:14 am (спустя 1 день 20 часов 16 минут; написано за 15 секунд)
   Заголовок сообщения:
Ответить с цитатой

прикрутил к drupal'у. работает
Вернуться к началу
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Окт 13, 2008 12:45 pm (спустя 1 месяц 16 дней 6 часов 31 минуту; написано за 33 секунды)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2008-10-13
  1. hyphen_words() -- добавлена возможность обрабатывать html код
  2. censure() -- улучшен алгоритм работы
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Ноя 17, 2008 12:13 pm (спустя 1 месяц 3 дня 23 часа 27 минут; написано за 34 секунды)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2008-11-17
  1. strip_tags_smart() -- текст форматируется только в том случае, если были вырезаны какие-либо таги.
  2. utf8_unescape_request() -- если в HTTP_COOKIE есть параметры с одинаковым именем, то берётся последнее значение, а не первое (так обрабатывается QUERY_STRING).
  3. utf8_simple_search_sql -- улучшен поиск целых слов (см. $re_utf8_no_letter_begin), функция может возвращать массив
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Гость






Карма: 367
   поощрить/наказать


СообщениеДобавлено: Ср Dec 10, 2008 2:09 pm (спустя 23 дня 1 час 55 минут; написано за 8 секунд)
   Заголовок сообщения:
Ответить с цитатой

Благодарствую
Вернуться к началу
Эдуард83
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Чт Dec 11, 2008 11:42 am (спустя 21 час 33 минуты; написано за 53 секунды)
   Заголовок сообщения:
Ответить с цитатой

function utf8_str_split($str) {
    // place each character of the string into and array
    $split=1;
    $array = array();
    for ( $i=0; $i < strlen( $str ); ){
        $value = ord($str[$i]);
        if($value > 127){
            if($value >= 192 && $value <= 223)
                $split=2;
            elseif($value >= 224 && $value <= 239)
                $split=3;
            elseif($value >= 240 && $value <= 247)
                $split=4;
        }else{
            $split=1;
        }
            $key = NULL;
        for ( $j = 0; $j < $split; $j++, $i++ ) {
            $key .= $str[$i];
        }
        array_push( $array, $key );
    }
    return $array;
}

Работает и в ПХП4
Нашёл в комментах http://cz.php.net/manual/ru/function.str-split.php#83331

Прошу добавить в сборку
Вернуться к началу
bæv
Модератор «Дзена»



Зарегистрирован: 27.08.2003
Сообщ.: 5737
Карма: ∞
   поощрить/наказать


СообщениеДобавлено: Чт Dec 11, 2008 9:18 pm (спустя 9 часов 35 минут)
   Заголовок сообщения:
Ответить с цитатой


М

Ветка выделена в отдельную тему «base64_decode»,
расположенную в форуме Разное :: PHP (11 Декабря 2008, 21:18).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
bæv
Модератор «Дзена»



Зарегистрирован: 27.08.2003
Сообщ.: 5737
Карма: ∞
   поощрить/наказать


СообщениеДобавлено: Ср Dec 17, 2008 1:50 am (спустя 5 дней 4 часа 32 минуты)
   Заголовок сообщения:
Ответить с цитатой


М

Ветка выделена в отдельную тему ««Проблемы» с include()»,
расположенную в форуме Лень сходить в Поиск или почитать документацию (17 Декабря 2008, 01:50).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Ср Dec 17, 2008 12:11 pm (спустя 10 часов 20 минут; написано за 1 минуту 36 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2008-12-17
  1. normal/ -- добавлены скрипты для нормализации UTF-8 из mediawiki.org
  2. class Func -- метод Func::setPath() заменён на метод Func::add_include_path()
  3. utf8_preg_match_all() -- Новая функция
  4. utf8_str_split() -- Новая функция
  5. utf8_chunk_split() -- Новая функция
  6. php2js() -- Некоторые улучшения в коде
  7. utf8_unescape_request() -- Создаёт массив $_POST для нестандартных Content-Type, например, "Content-Type: application/octet-stream". Стандартный PHP 5.2.x создаёт массив только для "Content-Type: application/x-www-form-urlencoded" и "Content-Type: multipart/form-data".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Пн Dec 22, 2008 4:00 pm (спустя 5 дней 3 часа 49 минут; написано за 46 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2008-12-22
  1. unicode_blocks_check() -- новая функция
  2. utf8_chr() -- новая функция
  3. utf8_ord() -- новая функция
  4. utf16_to_utf8() -- новая функция
  5. ucs2_to_utf8() -- функция удалена, вместо неё используется utf16_to_utf8()
  6. censure() -- улучшен алгоритм работы (remove unicode combining diactrical marks)
  7. оптимизация и улучшения в других функциях, в т.ч. расширение диапазона юникода с UCS-2 до UTF-16!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Rin
Участник форума



Зарегистрирован: 01.06.2005
Сообщ.: 488
Карма: 142
   поощрить/наказать

Откуда: Москва

СообщениеДобавлено: Вт Dec 30, 2008 12:02 pm (спустя 7 дней 20 часов 2 минуты; написано за 1 минуту 10 секунд)
   Заголовок сообщения:
Ответить с цитатой

Обновление от 2008-12-30, рекомендуется обновиться
  1. utf8_unescape() -- исправлена ошибка декодирования %uXXXX в UTF-8
  2. utf8_escape() -- функция удалена, т.к. формат %uXXXX является устаревшим
  3. utf8_unescape_request() -- исправлена ошибка декодирования %uXXXX в UTF-8 (используется utf8_unescape()), оптимизация скорости
  4. utf8_substr_replace() -- новая функция
  5. utf8_casecmp() -- новая функция
  6. utf8_strrev() -- новая функция
  7. оптимизация и улучшения в других функциях
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
atofigli
Гость





Карма: 367
   поощрить/наказать


СообщениеДобавлено: Чт Фев 05, 2009 3:18 am (спустя 1 месяц 5 дней 15 часов 15 минут; написано за 56 секунд)
   Заголовок сообщения: спасибо + вопрос по ucs2 и utf16
Ответить с цитатой

Господа, можно вопрос, почему процедуру конверта из ucs2 заменили utf-16. это одно и то же ?
Вернуться к началу
Показать сообщения:   
Начaть нoвую тeму   Ответить на тему Часовой пояс: GMT + 3 (Москва)
На страницу 1, 2, 3  След.
Страница 1 из 3   
Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать в опросах. Вы не можете прилагать файлы к сообщениям. Вы можете скачивать файлы.
  XML