Не могу заставить мой код работать. Предупреждение: preg_match_all () ожидает, что параметр 2 будет строкой, а массив указан в /script.php в строке 23. Я ищу, чтобы получить список адресов электронной почты:
<?php
$mbox = imap_open("{******.com:143/notls}", "******@******.com", "******");
echo "<h1>Email Addresses</h1>\n";
$headers = imap_headers($mbox);
if ($headers == false) {
echo "Call failed<br />\n";
} else {
foreach ($headers as $val) {
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches);
echo $maches[2] . "<br />\n";
}
}
imap_close($mbox);
?>
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches);
должно быть
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $val, $matches);
Вы перебирали массив, но передавали весь массив в preg_match_all
функционировать каждый цикл.
Также у вас есть опечатка:
echo $maches[2] . "<br />\n";
должно быть
echo $matches[2] . "<br />\n";
Других решений пока нет …