Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Как инвертировать строку (PHP)

Чтобы в строке изменить порядок символов на обратный (инвертировать), в PHP есть функция string strrev(string str).

strrev()

Функция strrev(), принимает один параметр — строку, и возвращает ее в обратном порядке.

Пример

Инвертировать строку "expange".

1
2
3
4
5
<?php

echo strrev('expange');//egnapxe

?>

strrev() и юникод

Если инвертируемая строка в юникоде и содержит кириллицу, то в результате вы увидите посторонние символы.

Решить проблему можно двумя способами.

Первый — перекодируем нашу строку в windows-1251 (или какую другую кодировку), инвертируем ее функцией strrev(), затем кодируем обратно в юникод.

Второй — преобразуем строку в массив, где каждый символ станет элементом массива, затем инвертируем массив функцией array_reverse(), и склеиваем полученный массив.

Напишем каждому способу свою функцию.

strrev_enc() — способ 1

За основу возьмем кодировку windows-1251 (статья все-таки на русском языке). Функция принимает так же один параметр — строку.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

function strrev_enc($str)
{
    
$str iconv('utf-8''windows-1251'$str);
    
$str strrev($str);
    
$str iconv('windows-1251''utf-8'$str);
    return 
$str;
}

$str 'Поделись опытом на expange';
echo 
strrev_enc($str); // egnapxe ан мотыпо ьсиледоП

?>

strrev_arr() — способ 2

Во втором способе кодировка не нужна.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

function strrev_arr($str)
{
    
preg_match_all('/./us'$str$array);
    
$str join('',array_reverse($array[0]));
    return 
$str;
}

$str 'Поделись опытом на expange';
echo 
strrev_enc($str); // egnapxe ан мотыпо ьсиледоП

?>

Производительность

Сравнивая по скорости strrev_enc() и strrev_arr(), функция strrev_enc() работает быстрее примерно в 4 раза.

Каждой функцией 1000 раз инвертировалась строка «Поделись опытом на expange».

strrev_arr() справилась за 0.0059 секунд;

strrev_arr() справилась за 0.0251 секунд.

Опубликовано: 08 ноября 2011  ·  Автор: Артём Фёдоров  ·  4229 просмотров

Категория

ГлавнаяПрограммированиеPHPСтрокиКак инвертировать строку (PHP)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

Ошибка в 11 строчке, правильно будет: echo strrev_arr($str); // egnapxe ан мотыпо ьсиледоП
termit · 257 дней назад
Второй способ не работает пишет: Fatal error: Call to undefined function strrev_enc() in index.php on line 11
termit · 257 дней назад
Строки, PHP, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания