regex — Как заменить последнюю запятую в строке на & quot; и & quot; используя php?

Я пытаюсь заменить последний вхождения запятой в тексте на «и», используя strrchr() а также str_replace(),

Пример:

$likes = 'Apple, Samsung, Microsoft';
$likes = str_replace(strrchr($likes, ','), ' and ', $likes);

Но это заменяет все последнее слово (в данном случае Microsoft), включая последнюю запятую в этой строке. Как я могу просто удалить последнюю запятую и заменить ее на «и»?

Мне нужно решить это с помощью strrchr() как функция. Вот почему этот вопрос не является дубликатом и более конкретным.

2

Решение

Вы можете использовать регулярное выражение, чтобы найти последнюю запятую в строке. Php preg_replace() заменить строку другой строкой с помощью регулярного выражения.

$likes = 'Apple, Samsung, Microsoft';
$likes = preg_replace("/,([^,]+)$/", " and $1", $likes)

Проверить результат в демонстрация

3

Другие решения

Чтобы заменить только последнее вхождение, я думаю, что лучший способ это:

$likes = 'Apple, Samsung, Microsoft';
$likes = substr_replace($likes, ' and', strrpos($likes, ','), 1);

strrpos находит позицию последней запятой, а substr_replace помещает желаемую строку в это место, заменяя в этом случае символы «1».

4

Во-первых, вы должны разделить элементы в массив со всеми, кроме последнего и последнего. затем вы кладете их обратно вместе с запятыми и «и», соответственно

$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";

однако: не забудьте проверить, достаточно ли у вас элементов. это не подходит для входов без запятой.

1

просто предоставьте ответ с функцией strrchr()

$likes = 'Apple, Samsung, Microsoft';
$portion = strrchr($likes, ',');
$likes = str_replace($portion, (" and" . substr($portion, 1, -1)), $likes);

так как strrchr() будут

Эта функция возвращает часть строки

Увидеть Док здесь

так что нам просто нужно заменить символ запятой, все должно быть в порядке. и запятая всегда будет первым символом, когда вы используете strrchr()

Увидеть Демо здесь

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector