【问题标题】:How to replace last comma in string with "and" using php?如何使用php用“and”替换字符串中的最后一个逗号?
【发布时间】:2017-06-05 09:35:25
【问题描述】:

我正在尝试使用strrchr()str_replace() 将文本中最后出现的逗号替换为“and”。

例子:

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

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

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

【问题讨论】:

标签: php regex string replace str-replace


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2013-05-17
      • 2011-10-06
      • 2012-12-16
      • 2019-07-01
      • 2012-06-02
      • 2022-12-13
      相关资源
      最近更新 更多