按字母顺序排序文件行数组

时间:2015-03-16 18:04:06

标签: php file sorting

我正在阅读电子邮件地址的文本文件并仅输出域名(使用@符号)。我需要按字母顺序排列列表,然后输出到屏幕上显示

到目前为止,这是我的代码:

<?php

    $file_handle = fopen("file.txt", "r");

    while (!feof($file_handle)) {
        $line = fgets($file_handle);
        $parts = explode("@", $line);
        $Id = $parts[count($parts) - 1];
        echo "@" . $Id . "<br>";

    }

    fclose($file_handle);

?>

如何启动排序以按字母顺序排列列表?

1 个答案:

答案 0 :(得分:2)

这应该适合你:

(这里我只使用file()获取文件的每一行。然后我使用array_map()遍历每一行,我只将域返回到数组$lines。最后我用sort()对数组进行排序并打印出来)

<?php

    $lines = array_map(function($v){
        return "@" . explode("@", $v)[1];
    }, file("test.txt"));

    sort($lines);

    foreach($lines as $line)
        echo $line . "<br />";

?>

输入/输出示例:

a.b@x.com
a.c@a.de
e.s@b.cu

@a.de 
@b.cu
@x.com