2010-08-12 26 views
0

fff.html est un e-mail avec des adresses e-mail dans ce certains ont href mailto liens et d'autres non, je veux les gratter et les sortir dans le format suivantadresses e-mail Grattez

[email protected],[email protected],[email protected] 

J'ai un simple, grattoir pour obtenir ceux qui sont liés href, mais quelque chose est bizarre

<?php 
    $url = "fff.html"; 
    $raw = file_get_contents($url); 

    $newlines = array("\t","\n","\r","\x20\x20","\0","\x0B"); 
    $content = str_replace($newlines, "", html_entity_decode($raw)); 

    $start = strpos($content,'<a href="mailto:'); 
    $end = strpos($content,'"',$start) + 8; 
    $mail = substr($content,$start,$end-$start); 

    print "$mail<br />"; 
    ?> 

je devrais obtenir des points supplémentaires pour l'utilisation originale de lorem ipsum

Répondre

3

le problème est que si vous avez m plus d'une adresse e-mail dans la page HTML. substr ne retournera que la première instance. Voici un script qui va analyser toutes les adresses e-mail. Vous devrez peut-être le modifier pour votre usage. Il affichera les résultats dans le formulaire CSV que vous avez demandé.

<?php 
$url = "fff.html"; 
$raw = file_get_contents($url); 

$newlines = array("\t","\n","\r","\x20\x20","\0","\x0B"); 
$content = str_replace($newlines, "", html_entity_decode($raw)); 

$start = strpos($content, '<body>'); 
$end = strpos($content, '</body>'); 
$data = substr($content, $start, $end-$start); 

$pattern = '#a[^>]+href="mailto:([^"]+)"[^>]*?>#is'; 
preg_match_all($pattern, $data, $matches); 

foreach ($matches[1] as $key => $email) { 
    $emails[] = $email; 
} 
echo implode(', ', $emails); 
?>