За последние 24 часа нас посетили 22587 программистов и 1043 робота. Сейчас ищут 708 программистов ...

Это интересно. Как вывести символ из строки?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Luka, 10 май 2017.

  1. Luka

    Luka Новичок

    С нами с:
    10 май 2017
    Сообщения:
    8
    Симпатии:
    1
    Задача первая - понятная:
    PHP:
    1. $name = "hihi!";
    2. $len = strlen($name); //5
    3. $pos = $len-1;
    4. echo $name{$pos};
    получаем !. Если $name = "hihi", то получим i.
    а если
    PHP:
    1. $name = "Вова!";
    2. $len = strlen($name); //9
    3. $pos = $len-1;
    4. echo $name{$pos};
    получаем !. Если $name = "вова", то получим кракозябру.
    Даже если пропишу
    PHP:
    1. $name = "Вова";
    2. $len = strlen($name);
    3. $pos = $len-1;
    4. echo iconv("windows-1251", "UTF-8", $name{$pos});
    Кирилические символы не выводятся.
    Я знаю, что в UTF-8 наши символы по 2 байта, а латиница по 1, и совершенно не понимаю, как мне тут вытащить символ, даже если я использую mb_strlen($name) - все равно выводится ерунда.
    Подскажите, или объясните пожалуйста, как извлечь кирилический символ из такой строки. уже всю голову сломал. Оч интересно.
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    PHP:
    1. <?php
    2. $name = "Вова";
    3. echo mb_substr($name, -1, null, 'utf-8'); // а
     
    Luka нравится это.
  3. Luka

    Luka Новичок

    С нами с:
    10 май 2017
    Сообщения:
    8
    Симпатии:
    1
    Благодарю, добрый человек)
    Но если я напишу
    PHP:
    1. <?php
    2. $name = "Вова";
    3. echo mb_substr($name, -2, null, 'utf-8'); // ва
    выведет ВА, а не В)
    тоже самое если просто 1 или 2, напишу -3 выведет ОВА
    А как вывести 1 символ по его позиции?
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Хорошо, что вы сразу открыли документацию и посмотрели описание функции ;)
    PHP:
    1. <?php
    2. echo mb_substr($name, 0, 1, 'utf-8'); // В
    3. echo mb_substr($name, 1, 1, 'utf-8'); // о
    4. echo mb_substr($name, 2, 1, 'utf-8'); // в
    5. echo mb_substr($name, 3, 1, 'utf-8'); // а
     
  5. Luka

    Luka Новичок

    С нами с:
    10 май 2017
    Сообщения:
    8
    Симпатии:
    1
    Вас понял, исправлюсь))) Огромная Благодарность)