如何用"和"替换字符串中的最后一个逗号使用PHP?

时间:2017-01-20 11:44:55

标签: php regex string replace str-replace

我试图用"和"替换文本中逗号的最后一次出现。使用trstrrchr()

示例:

str_replace()

但这取代了整个最后一个单词(在本例中为Microsoft),包括此字符串中的最后一个逗号。如何删除最后一个逗号并将其替换为"和" ?

我需要使用$likes = 'Apple, Samsung, Microsoft'; $likes = str_replace(strrchr($likes, ','), ' and ', $likes); 作为函数解决此问题。这就是为什么这个问题没有重复和更具体的原因。

4 个答案:

答案 0 :(得分:4)

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

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

strrpos找到最后一个逗号的位置,substr_replace将所需的字符串放在该位置替换' 1'在这种情况下的字符。

答案 1 :(得分:3)

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

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

检查demo

中的结果

答案 2 :(得分: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";

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

答案 3 :(得分:1)

只需使用功能strrchr()

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

因为strrchr()

  

此函数返回字符串的一部分

请参见Doc here

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

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

请参见Demo here