PHP删除字符串中后续出现的单词,我该怎么做?

时间:2013-09-07 12:59:22

标签: php string

我正在提取数据,其提供的格式不是很整齐。例如,数据提供了以下内容:

  • 大众高尔夫2.0 TDI高尔夫比赛
  • Volkswagen Passat Passat SE

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

  • 大众高尔夫2.0 TDI比赛
  • Volkswagen Passat SE

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

提前感谢任何想法。 Muchos Appreciatos! STE

2 个答案:

答案 0 :(得分:2)

就像你说的那样:

  1. explode string to array
  2. remove duplicates
  3. implode back to string
  4. 代码:

    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
    

答案 1 :(得分:0)

<?php
$arr = explode(' ', $str);
$arr = array_unique($arr);
$str = implode(' ', $arr);