PHP:按域对电子邮件进行排序
此函数可以完美地按字母顺序对列表进行排序,并清除所有重复项PHP:按域对电子邮件进行排序,php,arrays,function,sorting,explode,Php,Arrays,Function,Sorting,Explode,此函数可以完美地按字母顺序对列表进行排序,并清除所有重复项 function cleanMyList($myFile) { $myTextFile=file_get_contents($myFile); $myArray=explode("\r\n",$myTextFile); $myArray=array_unique($myArray); sort($myArray); $myTextFile=implode("\r\n",$myArray);
function cleanMyList($myFile)
{
$myTextFile=file_get_contents($myFile);
$myArray=explode("\r\n",$myTextFile);
$myArray=array_unique($myArray);
sort($myArray);
$myTextFile=implode("\r\n",$myArray);
return $myTextFile;
}
echo '<pre>'.cleanMyList('emails.txt').'</pre>';
exit;
email.txt之后:
another-duplicate@email.com
hezi-gangina@gmail.com
tshiko-ve-diko@mail.ru
einlehasikuy@mertrix.com
ein-leha-sikuy@yahoo.com
metrixheshbon@yahoo.com
stus-ve-thsiko@yandex.ua
z-mkd@z-mkd.com
但我希望更进一步,得到这个(按域排序):
$em=”mynam@domain.com,second@second.com,
third@third.com,fourth@fourth.com";
将电子邮件分成两部分
<?php
asort($ar2);
?>
$ar=split(“,”,$em);
while(列表($key,$val)=每个($ar)){
$ar2=拆分(“@”,$val);
echo$ar2[0];
回声“
”;
echo$ar2[1];
回声“
”;
}
根据值-asort()对数组进行排序(升序)
- asort()-根据值按升序对关联数组排序
- ksort()-根据键按升序对关联数组排序
- arsort()-根据值按降序对关联数组排序
- krsort()-根据键按降序排列关联数组
another-duplicate@email.com
hezi-gangina@gmail.com
tshiko-ve-diko@mail.ru
einlehasikuy@mertrix.com
ein-leha-sikuy@yahoo.com
metrixheshbon@yahoo.com
stus-ve-thsiko@yandex.ua
z-mkd@z-mkd.com
你试过什么吗?两种方式排序?没错!首先按字母顺序排序,然后按电子邮件提供商(域)排序。这就是我的意思。您是否尝试自行解决此问题?您可以使用explode功能,如果您喜欢我的答案,请不要忘记将其标记为“有帮助”。)@Hezi Gangina这很清楚,因为你没有这个特权,但我想知道为什么它被否决了,所以我可以改进它谢谢你!工作完美!(我不知道谁投了反对票)你的回答被接受了!你让我开心!:)谢谢兄弟!
$ar=split(",",$em);
while (list ($key, $val) = each ($ar)) {
$ar2=split("@",$val);
echo $ar2[0];
echo "<br>";
echo $ar2[1];
echo "<br><br>";
}
<?php
asort($ar2);
?>
<?php
function cleanMyList($myFile) {
$myArray = array_unique(file($myFile, FILE_IGNORE_NEW_LINES));
usort($myArray, function($a, $b){
preg_match_all("/(.*)@(.*)\./", $a, $m1);
preg_match_all("/(.*)@(.*)\./", $b, $m2);
if(($cmp = strcmp($m1[2][0], $m2[2][0])) == 0) {
return strcmp($m1[1][0], $m2[1][0]);
} else {
return ($cmp < 0 ? -1 : 1);
}
});
return $myTextFile = implode(PHP_EOL, $myArray);
}
echo "<pre>" . cleanMyList('emails.txt') . "</pre>";
?>
another-duplicate@email.com
hezi-gangina@gmail.com
tshiko-ve-diko@mail.ru
einlehasikuy@mertrix.com
ein-leha-sikuy@yahoo.com
metrixheshbon@yahoo.com
stus-ve-thsiko@yandex.ua
z-mkd@z-mkd.com