我有一个电子邮件列表,并希望提取每个电子邮件的域名和DNS_MX为每个域名。下面是我的代码:
<?php
$emaillist = file('list.txt');
foreach ($emaillist as $x) {
$domain = substr(strrchr($x, "@"), 1);
$mx = dns_get_record($domain, DNS_MX);
foreach ($mx as $key1) {
$mxtarget = $key1['target'];
}
echo "$mxtarget <br>";
}
?>问题:当我回显$mxtarget时,它只回显列表上最后一封电子邮件的值,但不回显它之前的电子邮件列表。但是,如果我回显域,它会回显列表中所有电子邮件的域。
发布于 2020-02-29 04:54:40
echo语句在foreach循环之外。将echo放置在内部循环中,每个MX都会一次回复一次。
如果您希望一次用一个命令回显它们,那么将它们收集到循环中的一个变量中,然后回显整个列表。
编辑:
为了处理当前格式化的文本文件,首先需要从数组中的每个元素中删除换行符。
<?php
$emaillist = file('https://cardguard.xyz/tools/list.txt');
foreach ($emaillist as &$email) {
$email = str_replace(array("\r", "\n"), '', $email);
}
foreach ($emaillist as $x) {
$domain = substr(strrchr($x, "@"), 1);
$mx = dns_get_record($domain, DNS_MX);
//$mxtarget = "";
foreach ($mx as $key1) {
$mxtarget = $key1['target'];
echo "$mxtarget. \n";
}
}
?>发布于 2020-02-29 05:16:52
foreach ($mx as $key1){
$mxtarget = $key1['target'];}
echo "$mxtarget <br>";
}以上代码应该是
foreach ($mx as $key1){
$mxtarget[] = $key1['target'];}
}
print_r($mxtarget);https://stackoverflow.com/questions/60462072
复制相似问题