PHPMailer::parseAddresses PHP Méthode

parseAddresses() public méthode

Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. Note that quotes in the name part are removed.
public parseAddresses ( string $addrstr, boolean $useimap = true ) : array
$addrstr string The address list string
$useimap boolean Whether to use the IMAP extension to parse the list
Résultat array
    public function parseAddresses($addrstr, $useimap = true)
    {
        $addresses = array();
        if ($useimap and function_exists('imap_rfc822_parse_adrlist')) {
            //Use this built-in parser if it's available
            $list = imap_rfc822_parse_adrlist($addrstr, '');
            foreach ($list as $address) {
                if ($address->host != '.SYNTAX-ERROR.') {
                    if ($this->validateAddress($address->mailbox . '@' . $address->host)) {
                        $addresses[] = array('name' => property_exists($address, 'personal') ? $address->personal : '', 'address' => $address->mailbox . '@' . $address->host);
                    }
                }
            }
        } else {
            //Use this simpler parser
            $list = explode(',', $addrstr);
            foreach ($list as $address) {
                $address = trim($address);
                //Is there a separate name part?
                if (strpos($address, '<') === false) {
                    //No separate name, just use the whole thing
                    if ($this->validateAddress($address)) {
                        $addresses[] = array('name' => '', 'address' => $address);
                    }
                } else {
                    list($name, $email) = explode('<', $address);
                    $email = trim(str_replace('>', '', $email));
                    if ($this->validateAddress($email)) {
                        $addresses[] = array('name' => trim(str_replace(array('"', "'"), '', $name)), 'address' => $email);
                    }
                }
            }
        }
        return $addresses;
    }

Usage Example

 /**
  * Test RFC822 address splitting.
  */
 public function testAddressSplitting()
 {
     //Test built-in address parser
     $this->assertCount(2, $this->Mail->parseAddresses('Joe User <*****@*****.**>, Jill User <*****@*****.**>'), 'Failed to recognise address list (IMAP parser)');
     //Test simple address parser
     $this->assertCount(2, $this->Mail->parseAddresses('Joe User <*****@*****.**>, Jill User <*****@*****.**>', false), 'Failed to recognise address list');
     //Test single address
     $this->assertNotEmpty($this->Mail->parseAddresses('Joe User <*****@*****.**>', false), 'Failed to recognise single address');
     //Test quoted name IMAP
     $this->assertNotEmpty($this->Mail->parseAddresses('Tim "The Book" O\'Reilly <*****@*****.**>'), 'Failed to recognise quoted name (IMAP)');
     //Test quoted name
     $this->assertNotEmpty($this->Mail->parseAddresses('Tim "The Book" O\'Reilly <*****@*****.**>', false), 'Failed to recognise quoted name');
     //Test single address IMAP
     $this->assertNotEmpty($this->Mail->parseAddresses('Joe User <*****@*****.**>'), 'Failed to recognise single address (IMAP)');
     //Test unnamed address
     $this->assertNotEmpty($this->Mail->parseAddresses('*****@*****.**', false), 'Failed to recognise unnamed address');
     //Test unnamed address IMAP
     $this->assertNotEmpty($this->Mail->parseAddresses('*****@*****.**'), 'Failed to recognise unnamed address (IMAP)');
     //Test invalid addresses
     $this->assertEmpty($this->Mail->parseAddresses('Joe User <[email protected].>, Jill User <*****@*****.**>'), 'Failed to recognise invalid addresses (IMAP)');
     //Test invalid addresses
     $this->assertEmpty($this->Mail->parseAddresses('Joe User <[email protected].>, Jill User <*****@*****.**>', false), 'Failed to recognise invalid addresses');
 }
All Usage Examples Of PHPMailer::parseAddresses