删除文本文件中的重复行

Reh*_*hmy 1 php regex

我需要打开一个文本文件(file.txt),其中包含以下格式的数据:

dave : 50lb : hlof
jimmy : 55lb : okay
dave : 12lb : krsho
Run Code Online (Sandbox Code Playgroud)

我要删除具有重复起始词的行,因此结果将如下所示:-

dave : 50lb : hlof
jimmy : 55lb : okay
Run Code Online (Sandbox Code Playgroud)

我一直在考虑使用,array_unique但没有用,所以任何想法如何做到..也许可以regex

更新资料

我的尝试是

$lines = file('file.txt');
$lines = array_unique($lines);
file_put_contents('file.txt', implode($lines));
Run Code Online (Sandbox Code Playgroud)

但是没有用,因为它只比较整行,如果不一样的话会认为它不同

Riz*_*123 5

这应该为您工作:

(在这里,我先遍历$lineswith的每个元素,array_map()然后遍历每个explode()值,:并返回第一个元素。此后,我将使用array_intersect_key()之前创建的数组,在该数组中,我将array_unique()用于获取唯一键并与完整数组相交)

<?php

    $lines = file("test.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    $lines = array_intersect_key($lines, array_unique(array_map(function($v){
        return trim(explode(":", $v)[0]);
    }, $lines)));

    print_r($lines);

?>
Run Code Online (Sandbox Code Playgroud)

输出:

Array ( [0] => dave : 50lb : hlof [1] => jimmy : 55lb : okay )
Run Code Online (Sandbox Code Playgroud)