Этю́д (фр. étude «изучение») — инструментальная пьеса, как правило, небольшого объёма, основанная на частом применении какого-либо трудного приёма исполнения и предназначенная для усовершенствования техники исполнителя. (с) wikipedia
Первое, что приходит в голову — переменная типа string является массивом символов типа char, поэтому достаточно заменить последние два индекса:
Задача решена в лоб, код плохо читается, так как совершается два однотипных действия.
Второй вариант более изощренный: стандартной функцией substr() удаляем два последних символа и добавляем две звездочки:
Вариант рабочий, но не нравится, что приходится делать конкатенацию строк, из-за чего опять страдает читаемость кода.
Третий вариант также использует стандартную функцию substr_replace(), которая заменяет одни подстроки на другие:
Хороший вариант, но используется функция strlen(), поэтому открываем руководство по php и смотрим синтаксис функции substr_replace():
И тогда конечный вариант:
Можно было также воспользоваться регулярными выражениями, что работает немного медленнее конечного результата:
Первое, что приходит в голову — переменная типа string является массивом символов типа char, поэтому достаточно заменить последние два индекса:
<?php
$str = 'testWord';
$str_length = strlen($str);
$str[$str_length-1] = '*';
$str[$str_length-2] = '*';
echo $str;
?>
Задача решена в лоб, код плохо читается, так как совершается два однотипных действия.
Второй вариант более изощренный: стандартной функцией substr() удаляем два последних символа и добавляем две звездочки:
<?php
$str = 'testWord';
$str = substr($str,0, strlen($str)-2).'**';
echo $str;
?>
Вариант рабочий, но не нравится, что приходится делать конкатенацию строк, из-за чего опять страдает читаемость кода.
Третий вариант также использует стандартную функцию substr_replace(), которая заменяет одни подстроки на другие:
<?php
$str = 'testWord';
$str = substr_replace($str,'**',strlen($str)-2);
echo $str;
?>
Хороший вариант, но используется функция strlen(), поэтому открываем руководство по php и смотрим синтаксис функции substr_replace():
string substr_replace(string str, string replacement, int start [, int length])
Эта функция заменяет в исходной строке одни подстроки на другие. Она возвращает строку str, в которой часть от символа с позицией start и длиной length заменяется строкой replacement. Если аргумент длины length не указан, замена проводится до конца.
Если значение аргумента start положительно, то отсчет производится от начала строки str, в противном случае — от конца. В случае неотрицательного значения length, оно указывает длину заменяемого фрагмента. Если же оно отрицательно, то это — число символов от конца строки str до последнего символа заменяемого фрагмента.
И тогда конечный вариант:
<?php
$str = 'testWord';
$str = substr_replace($str,'**',-2);
echo $str;
?>
Можно было также воспользоваться регулярными выражениями, что работает немного медленнее конечного результата:
<?php
$str = 'testString';
$pattern = "|.{2}$|si";
$replace = '**';
$str = preg_replace($pattern,$replace,$str);
echo $str;
?>