如何使用 php 将字符串中的最后一个逗号替换为 "and"?

How to replace last comma in string with "and" using php?

我正在尝试使用 strrchr()str_replace().

将文本中最后一次出现的逗号替换为 "and"

示例:

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

但这会替换整个最后一个单词(在本例中为 Microsoft),包括该字符串中的最后一个逗号。我怎样才能删除最后一个逗号并将其替换为“和”?

我需要使用 strrchr() 作为函数来解决这个问题。这就是为什么这个问题没有重复而且更具体。

首先,你必须将元素分成一个数组,除了最后一个,最后一个。然后你用逗号和 "and" 分别把它们放回原处

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

但是:不要忘记检查您是否确实有足够的元素。对于没有逗号的输入,这会失败。

您可以使用正则表达式查找字符串中的最后一个逗号。 Php preg_replace() 通过正则表达式模式将字符串替换为另一个字符串。

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

检查结果 demo

只替换最后一次出现的,我认为更好的方法是:

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

strrpos 找到最后一个逗号的位置,并且 substr_replace 将所需的字符串放在该位置以替换本例中的 '1' 个字符。

只需提供函数 strrchr()

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

因为 strrchr()

This function returns the portion of string

Doc here

所以我们只需要替换逗号就可以了。当您使用 strrchr()

时,逗号将始终是第一个字符

Demo here