За последние 24 часа нас посетили 19150 программистов и 1644 робота. Сейчас ищут 926 программистов ...

Как заменить одну букву в слове на другую?

Тема в разделе "PHP для новичков", создана пользователем Contessa, 5 май 2012.

  1. Contessa

    Contessa Активный пользователь

    С нами с:
    8 мар 2012
    Сообщения:
    74
    Симпатии:
    0
    Добрый день,
    кто знает как заменить одну букву в слове на другую если её позиция относительно
    других букв разная в каждом вводимом пользователем слове?

    $massiv1 = array($slovo);
    if (in_array("έ" or "ύ" or "ί" or "ό" or "ά" or "ή" or "ώ", $massiv1))
    {
    например заменить найденную "έ" на "ε" и вывести слово экран в новом написании;
    }

    Кстати, кто-нибудь знает почему каждая греческая буква считается за два знака, а не одним как в других алфавитах?
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    http://www.php.ru/manual/function.str-replace.html
    Код (PHP):
    1. <?php
    2. /*
    3.     Файл должен быть сохранён в кодировке UTF-8
    4. */
    5. $str = 'asdέzxcύasd';
    6. $str = str_replace(array('έ', 'ύ'), array('e', 'u'), $str);
    7. header('Content-type: text/html; charset=utf-8');
    8. echo($str);
    9. ?>
    Добавлено спустя 5 минут 38 секунд:
    Она занимает не два знака, она занимает два байта. Просто функция strlen() считает не количество знаков (символов), а количество байт. Для однобайтовых кодировок она возвращает корректный результат, а для многобайтовых (например, UTF-8) - эта функция не может посчитать правильное кол-во символов. Для UTF-8 есть mbstring. Например, для подсчёта кол-ва символов
    Код (PHP):
    1. mb_strlen($str, 'UTF-8'); 
    Один байт - это всего 255 возможных значений. Невозможно в однобайтовой кодировке хранить все возможные символы. Для этого используются многобайтовые кодировки, в которых каждый символ может быть представлен несколькими байтами. Например, UTF-8, в котором даже китайский алфавит есть :)))
     
  3. Contessa

    Contessa Активный пользователь

    С нами с:
    8 мар 2012
    Сообщения:
    74
    Симпатии:
    0
    Спасибо за помощь.
    А японские иероглифы и знаки каны скольки байтам эквивалентны?
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    По идее для всего этого достаточно двух байт.
    Один байт - это 256 возможных значений.
    Два байта - это уже 65536 возможных значений.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в утф-8 буква может быть от одного до четырех байт. первый бит служебный. потом два служебных, потом три... не так всё просто.