Вы можете использовать substr_replace
.
$str = "[House-3-BLUE]";
echo substr_replace($str, strtolower(substr($str, 1, 1)), 1, 1);
Попробуйте онлайн: https://3v4l.org/oDoXB
Чтобы сделать то же самое, но убедиться, что он безопасен для Unicode, вам нужно разбить строку на 3 части, используя mb_substr
и затем объединить его обратно в целую строку:
$str = "?House-3-BLUE]";
echo mb_substr($str,0,1) . mb_strtolower(mb_substr($str,1,1)) . mb_substr($str,2);
Попробуйте онлайн: https://3v4l.org/NYe0r