First of all check who u credit :p
Secondly why don't you just try to fix it yourself?

There was just a typo in the regexp:
- #^from\s*:\s*([^>]+)(<([^>]+)>)?#si
+ #^from\s*:\s*([^<]+)(<([^>]+)>)?#si

Hopefully this will help you even more:

<?php

/**
 * @param   string  $runlevel
 * @return  mixed
 */
function fetchSender ( $mailText ) {
  $mailText = explode( "\n" , $mailText ) ;

  foreach ( $mailText AS $mailLine ) {
    $mailLine = trim ( $mailLine ) ;

    if ( strtoupper ( substr ( $mailLine , 0 , 4 ) ) == 'FROM' ) {
      preg_match ( '#^\s*FROM\s*:\s*(([^<]+)(\<([^>]+)\>)?)#si' ,
$mailLine , $parts );

      break ;
    }
  }

  if ( is_array ( $parts ) === FALSE ) {
    return FALSE ;
  } else {
    return array ( 'name' => isset ( $parts[2] ) ? $parts[2] : 'unknown' ,
             'from' => isset ( $parts[1] ) ? $parts[1] : 'unknown' ,
             'mail' => isset ( $parts[4] ) ? $parts[4] : 'unknown' ) ;
  }
}

/**
 * @param   array   $strings
 * @return  void
 */
function debug_FetchSender ( $strings ) {
  echo '<pre>';

  foreach ( $strings AS $string ) {
    $sender = fetchSender ( $string );
    $sender = array_map ( 'htmlspecialchars' , $sender ) ;

    print_r ( $sender );
  }

  echo '</pre>';
}

debug_FetchSender ( array ( 'FROM: Red Wingate <[EMAIL PROTECTED]>' ,
              'FROM: Red Wingate' ,
              'FROM: [EMAIL PROTECTED]' ) ) ;

?>

[...]
>> Thanks Aiden for ur help
>>
>> i used ur code and i got
>>
>> name as Red Wingate<[EMAIL PROTECTED]
>> and no email.
>>
>> So pls correct the code and send me such that i get name and email
>> separately.
>>
>> Regards
>> syed
[...]

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to