2014-11-18 7 views
0

Кажется, что мой код не работает. Внимание: 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); 
?> 

ответ

0
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"; 
+0

шаг ближе, но все, что печатает это массив это не дает мне значение. – CrayEightz

Смежные вопросы