Articles of multibyte

mb_detect_encoding обнаруживает ASCII как UTF-8?

Я пытаюсь автоматически конвертировать импортированные метаданные IPTC из изображений в UTF-8 для хранения в базе данных на mb_ функций PHP mb_ . В настоящее время это выглядит так: $val = mb_convert_encoding($val, 'UTF-8', mb_detect_encoding($val)); Однако, когда mb_detect_encoding() предоставляется строка ASCII (специальные символы в латинских1 полях от 192-255), она обнаруживает ее как UTF-8, поэтому в следующей попытке […]

Усечение многобайтовой строки в n символов

Я пытаюсь использовать этот метод в String Filter: public function truncate($string, $chars = 50, $terminator = ' …'); Я бы ожидал этого $in = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYXZ1234567890"; $out = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV …"; а также $in = "âãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝ"; $out = "âãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđ …"; Это $chars минус символы строки $terminator . Кроме того, фильтр должен разрезать на границе первого слова ниже […]

Являются ли PHP preg_functions многобилетными безопасными?

В PHP нет многобайтовых «preg» -функций, значит, это означает, что preg_functions по умолчанию является безопасным? Не удалось найти упоминания в документации php.

str_replace () на многобайтовых строках опасно?

Учитывая некоторые многобайтовые наборы символов, могу ли я предположить, что следующее не делает то, что оно предназначалось? $string = str_replace('"', '\\"', $string); В частности, если вход был в наборе символов, который может иметь допустимый символ, например, 0xbf5c, так что злоумышленник может ввести 0xbf22, чтобы получить 0xbf5c22, оставив действительный символ, за которым следует некорректная двойная кавычка […]

Многобайтовая безопасная функция wordwrap () для UTF-8

wordwrap() PHP не работает правильно для многобайтовых строк, таких как UTF-8. В комментариях есть несколько примеров безопасных функций mb, но с некоторыми различными тестовыми данными все они, похоже, имеют некоторые проблемы. Функция должна принимать те же параметры, что и wordwrap() . В частности, убедитесь, что он работает: вырезать среднее слово, если $cut = true , […]

Многобитовая обрезка в PHP?

По-видимому, в mb_* нет mb_trim , поэтому я пытаюсь реализовать его самостоятельно. Я недавно нашел это регулярное выражение в комментарии на php.net : /(^\s+)|(\s+$)/u Поэтому я бы выполнил его следующим образом: function multibyte_trim($str) { if (!function_exists("mb_trim") || !extension_loaded("mbstring")) { return preg_replace("/(^\s+)|(\s+$)/u", "", $str); } else { return mb_trim($str); } } Регулярное выражение кажется правильным для […]

glob () не может найти имена файлов с многобайтовыми символами в Windows?

Я пишу файловый менеджер и вам нужно проверять каталоги и работать с переименованием файлов, которые могут иметь многобайтовые символы. Я работаю над этим локально в Windows / Apache PHP 5.3.8 со следующими именами файлов в каталоге: filename.jpg имяфайла.jpg Файл 件 name.jpg פילענאַמע. JPG 文件 名 .jpg Тестирование на реальном сервере UNIX прекратилось. Тестирование локально в […]

multibyte strtr () -> mb_strtr ()

Кто-нибудь написал многобайтовый вариант функции strtr ()? Мне нужен этот. Изменить 1 (пример желаемого использования): Пример: $ from = 'ľľščťžýáíŕďňäô'; // эти символы находятся в UTF-8 $ to = 'llsctzyaiŕdnao'; // ввод – в UTF-8 $ str = 'Kŕdeľ ďatľov učí koňa žrať kôru.'; $ str = mb_strtr ($ str, $ from, $ to); // […]

Проблема с использованием кодировки utf-8 с использованием PHP + MySQL

Я перевел данные из MySQL 4 (они были первоначально установлены в latin2 encoding ) в MySQL 5 и установил кодировку в utf-8 . Он хорошо выглядит в phpMyAdmin , и utf-8 в порядке. Однако на некоторых сайтах есть вопросительные знаки! Кодировка сайта также установлена ​​на utf8 поэтому я не понимаю, где проблема. Файлы PHP и […]

Символы UTF-8 отображаются неправильно

Это мой PHP-код: <?php $result = ''; $str = 'Тугайный соловей'; for ($y=0; $y < strlen($str); $y++) { $tmp = mb_substr($str, $y, 1); $result = $result . $tmp; } echo 'result = ' . $result; Выход: Тугайный Ñоловей Что я могу сделать? Я должен положить $result в базу данных MySQL.