Добрый день, кто знает как заменить одну букву в слове на другую если её позиция относительно других букв разная в каждом вводимом пользователем слове? $massiv1 = array($slovo); if (in_array("έ" or "ύ" or "ί" or "ό" or "ά" or "ή" or "ώ", $massiv1)) { например заменить найденную "έ" на "ε" и вывести слово экран в новом написании; } Кстати, кто-нибудь знает почему каждая греческая буква считается за два знака, а не одним как в других алфавитах?
http://www.php.ru/manual/function.str-replace.html Код (PHP): <?php /* Файл должен быть сохранён в кодировке UTF-8 */ $str = 'asdέzxcύasd'; $str = str_replace(array('έ', 'ύ'), array('e', 'u'), $str); header('Content-type: text/html; charset=utf-8'); echo($str); ?> Добавлено спустя 5 минут 38 секунд: Она занимает не два знака, она занимает два байта. Просто функция strlen() считает не количество знаков (символов), а количество байт. Для однобайтовых кодировок она возвращает корректный результат, а для многобайтовых (например, UTF-8) - эта функция не может посчитать правильное кол-во символов. Для UTF-8 есть mbstring. Например, для подсчёта кол-ва символов Код (PHP): mb_strlen($str, 'UTF-8'); Один байт - это всего 255 возможных значений. Невозможно в однобайтовой кодировке хранить все возможные символы. Для этого используются многобайтовые кодировки, в которых каждый символ может быть представлен несколькими байтами. Например, UTF-8, в котором даже китайский алфавит есть ))
По идее для всего этого достаточно двух байт. Один байт - это 256 возможных значений. Два байта - это уже 65536 возможных значений.
в утф-8 буква может быть от одного до четырех байт. первый бит служебный. потом два служебных, потом три... не так всё просто.