如何使用php用“and”替换字符串中的最后一个逗号?
Posted
技术标签:
【中文标题】如何使用php用“and”替换字符串中的最后一个逗号?【英文标题】:How to replace last comma in string with "and" using php? 【发布时间】:2017-06-05 09:35:25 【问题描述】:我正在尝试使用strrchr()
和str_replace()
将文本中最后出现的逗号替换为“and”。
例子:
$likes = 'Apple, Samsung, Microsoft';
$likes = str_replace(strrchr($likes, ','), ' and ', $likes);
但这会替换整个最后一个单词(在本例中为 Microsoft),包括此字符串中的最后一个逗号。如何删除最后一个逗号并将其替换为 " 和 " ?
我需要使用strrchr()
作为函数来解决这个问题。这就是为什么这个问题没有重复并且更具体的原因。
【问题讨论】:
php Replace Last Occurence of a String in a String?的可能重复 我看到了这个问题。我需要使用strrchr
来解决这个问题。
【参考方案1】:
首先,您必须将元素分成一个数组,其中包含除最后一个和最后一个之外的所有元素。然后你分别用逗号和一个“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";
然而:不要忘记检查你是否真的有足够的元素。这对于没有逗号的输入会失败。
【讨论】:
警告:array_pop() 期望参数 1 为数组 我们可以使用 if($last) $likes = implode(",", $likes_arr) 。 “ 和” 。 $最后;回声$喜欢; //"A、B 和 C"; 表示不带逗号的输入失败 @RajeshBaskaran 没有。不是这样,因为对于输入“A”,$likes_arr 变为 ["A"],所以 $last 将是 "A",其计算结果为 true。【参考方案2】:您可以使用正则表达式查找字符串中的最后一个逗号。 php preg_replace()
用正则表达式模式替换字符串。
$likes = 'Apple, Samsung, Microsoft';
$likes = preg_replace("/,([^,]+)$/", " and $1", $likes)
检查结果在demo
【讨论】:
你也可以preg_replace('/,(?=[^,]*$)/',' and', $likes);
【参考方案3】:
要仅替换最后一次出现,我认为更好的方法是:
$likes = 'Apple, Samsung, Microsoft';
$likes = substr_replace($likes, ' and', strrpos($likes, ','), 1);
strrpos 找到最后一个逗号的位置,substr_replace 将所需的字符串放在那个位置,在这种情况下替换 '1' 字符。
【讨论】:
【参考方案4】:只需使用函数strrchr()
提供答案
$likes = 'Apple, Samsung, Microsoft';
$portion = strrchr($likes, ',');
$likes = str_replace($portion, (" and" . substr($portion, 1, -1)), $likes);
因为strrchr()
会
这个函数返回字符串的一部分
见Doc here
所以我们只需要替换逗号符号就可以了。当你使用strrchr()
时,逗号总是第一个字符
见Demo here
【讨论】:
以上是关于如何使用php用“and”替换字符串中的最后一个逗号?的主要内容,如果未能解决你的问题,请参考以下文章