Я пытаюсь заменить последний вхождения запятой в тексте на «и», используя strrchr()
а также str_replace()
,
Пример:
$likes = 'Apple, Samsung, Microsoft';
$likes = str_replace(strrchr($likes, ','), ' and ', $likes);
Но это заменяет все последнее слово (в данном случае Microsoft), включая последнюю запятую в этой строке. Как я могу просто удалить последнюю запятую и заменить ее на «и»?
Мне нужно решить это с помощью strrchr()
как функция. Вот почему этот вопрос не является дубликатом и более конкретным.
Вы можете использовать регулярное выражение, чтобы найти последнюю запятую в строке. Php preg_replace()
заменить строку другой строкой с помощью регулярного выражения.
$likes = 'Apple, Samsung, Microsoft';
$likes = preg_replace("/,([^,]+)$/", " and $1", $likes)
Проверить результат в демонстрация
Чтобы заменить только последнее вхождение, я думаю, что лучший способ это:
$likes = 'Apple, Samsung, Microsoft';
$likes = substr_replace($likes, ' and', strrpos($likes, ','), 1);
strrpos находит позицию последней запятой, а substr_replace помещает желаемую строку в это место, заменяя в этом случае символы «1».
Во-первых, вы должны разделить элементы в массив со всеми, кроме последнего и последнего. затем вы кладете их обратно вместе с запятыми и «и», соответственно
$likes = "A, B, C";
$likes_arr = explode(",", $likes);
$last = array_pop($likes_arr);
$likes = implode(",", $likes_arr) . " and" . $last;
echo $likes; //"A, B and C";
однако: не забудьте проверить, достаточно ли у вас элементов. это не подходит для входов без запятой.
просто предоставьте ответ с функцией strrchr()
$likes = 'Apple, Samsung, Microsoft';
$portion = strrchr($likes, ',');
$likes = str_replace($portion, (" and" . substr($portion, 1, -1)), $likes);
так как strrchr()
будут
Эта функция возвращает часть строки
Увидеть Док здесь
так что нам просто нужно заменить символ запятой, все должно быть в порядке. и запятая всегда будет первым символом, когда вы используете strrchr()
Увидеть Демо здесь