Как заменить заданное вхождение подстроки в строке?
Задана строка:
$str = '12-345-67-89-10';
Нужно поменять только первые 2 дефиса с начала строки или последние два с конца.
Функция str_replace заменяет все вхождения.
Чтобы заменить три дефиса сначала я прописал такой код:
$arr = str_split($str);
$new_arr = [];
foreach ($arr as $key => $value) {
if($value == '-' && $key <=10){
$value = '!';
}
$new_arr[] = $value;
}
$str = implode('', $new_arr);
Только сдается мне, что он не универсален.
А как подсчитать количество вхождений с конца?
Ну с помощью функцией subst_count я узнаю сколько дефисов в строке, а вот, что с этим дальше делать, мне не совсем понятно?
Проясните мне пожалуйста...
Заранее благодарен.
Можно и с помощью explode, только, когда собираем строку обратно с помощью implode(), нужно указывать разделитель. И опять заменятся все дефисы на '!'. А мне нужно, заменить н-количество раз сначала, или с конца, написать функцию, которая это сделала.
Сергей Бурдужа: Зачем implode? В Массиве можно посчитать кол-во элементов, а значит иметь возможность выбрать первые n и последние n. Или резать и еще миллион вариантов.