PHP 删除字符串中单词的后续出现,我将如何做到这一点


PHP removing subsequent occurrences of a word in a string, how would I do this?

我正在拉数据,它提供的格式不是很整洁。例如,数据提供了类似于以下内容的内容:

  • 大众高尔夫 2.0 TDI 高尔夫比赛
  • 大众 帕萨
  • 特 帕萨特 SE

但是我想做的只是删除重复单词的第二个(以及任何后续出现),以便字符串看起来像:

  • 大众高尔夫 2.0 TDI 比赛
  • 大众帕萨特 SE
到目前为止,我已经想到从字符串中

创建一个单词数组,删除已经重复单词的下一行,然后从数组行中重新构建字符串。有没有人有其他(更好的)想法来做到这一点?它是同步服务的一部分,已经非常耗费资源,因此使此过程尽可能高效非常重要。

提前感谢您的任何想法。穆乔斯欣赏!斯特

就像你说的:

  1. 将字符串分解到数组
  2. 删除重复项
  3. 内爆回字符串

法典:

function short($v) {
    $v = trim(preg_replace('~'s+~', ' ', $v)); # just to clear extra spacing
    $v = explode(' ', $v);
    $v = array_unique($v);
    return implode(' ', $v);
}

例;

$v = 'Volkswagen Golf 2.0 TDI Golf Match';
echo short($v); # Volkswagen Golf 2.0 TDI Match
$v = '   Volkswagen       Passat Passat     SE     ';
echo short($v); # Volkswagen Passat SE
<?php
$arr = explode(' ', $str);
$arr = array_unique($arr);
$str = implode(' ', $arr);
相关文章: