если вы примерно знаете, как близко к концу строки находится подстрока, которую вы хотите заменить, вы используете substr_replace()
с отрицательными параметрами $start
и $length
, или вы можете просто закодировать функцию с помощьюруку, чтобы на самом деле пройти, найти последнее вхождение, а затем удалить его.что-то вроде этого (не проверено, написано очень быстро):
function replace_last_occurrence($haystack, $needle) {
$pos = 0;
$last = 0;
while($pos !== false) {
$pos = strpos($haystack, $needle, $pos);
$last = $pos;
}
substr_replace($haystack, "", $last, strlen($needle));
}
аналогично, для первого вхождения
function replace_first_occurrence($haystack, $needle) {
substr_replace($haystack, "", strpos($haystack, $needle, $pos),
strlen($needle));
}
вы также можете обобщить это для замены n-го вхождения:
function replace_nth_occurrence($haystack, $needle, $n) {
$pos = 0;
$last = 0;
for($i = 0 ; $i <= $n ; $i++) {
$pos = strpos($haystack, $needle, $pos);
$last = $pos;
}
substr_replace($haystack, "", $last, strlen($needle));
}