Skip to content

choval/email_parse

Folders and files

NameName
Last commit message
Last commit date
Nov 19, 2023
Nov 19, 2023
Jan 1, 2022
Dec 21, 2019
Dec 21, 2019
Nov 19, 2023
Nov 19, 2023
Nov 19, 2023
Feb 21, 2021
Dec 21, 2019

Repository files navigation

choval/email_parse

Email functions for validating and parsing emails.

Why

  1. PHP's filter_var doesn't validate Unicode emails.
  2. Punycode~
  3. Why not?

Install

composer require choval/email_parse

Functions

email_parse

Parses an email and returns an array with the parts of an email.

$parts = email_parse('[email protected]');
var_dump($parts);
/*
array(11) {
  ["raw"]=>
  string(16) "[email protected]"
  ["unicode"]=>
  bool(false)
  ["valid"]=>
  bool(true)
  ["idn_domain"]=>
  string(11) "example.com"
  ["idn_local"]=>
  string(4) "user"
  ["idn_tld"]=>
  string(3) "com"
  ["domain"]=>
  string(11) "example.com"
  ["tld"]=>
  string(3) "com"
  ["local"]=>
  string(4) "user"
  ["safe_email"]=>
  string(16) "[email protected]"
  ["email"]=>
  string(16) "[email protected]"
}
*/

// Go crazy
$parts = email_parse('πŸ˜ƒ@ν…ŒμŠ€νŠΈγ€‚γƒ†γ‚Ήγƒˆ');
var_dump($parts);
/*
array(11) {
  ["raw"]=>
  string(26) "πŸ˜ƒ@ν…ŒμŠ€νŠΈγ€‚γƒ†γ‚Ήγƒˆ"
  ["unicode"]=>
  bool(true)
  ["valid"]=>
  bool(true)
  ["idn_domain"]=>
  string(25) "xn--9t4b11yi5a.xn--zckzah"
  ["idn_local"]=>
  string(8) "xn--h28h"
  ["idn_tld"]=>
  string(10) "xn--zckzah"
  ["domain"]=>
  string(19) "ν…ŒμŠ€νŠΈ.γƒ†γ‚Ήγƒˆ"
  ["tld"]=>
  string(9) "γƒ†γ‚Ήγƒˆ"
  ["local"]=>
  string(4) "πŸ˜ƒ"
  ["safe_email"]=>
  string(34) "[email protected]"
  ["email"]=>
  string(24) "πŸ˜ƒ@ν…ŒμŠ€νŠΈ.γƒ†γ‚Ήγƒˆ"
}
*/

email_valid

Check if an email is valid and returns the email if valid or false.
Uses email_parse in the background and returns email key.

$valid = email_valid('πŸ˜ƒ@ν…ŒμŠ€νŠΈγ€‚γƒ†γ‚Ήγƒˆ');
var_dump($valid);
// string(24) "πŸ˜ƒ@ν…ŒμŠ€νŠΈ.γƒ†γ‚Ήγƒˆ"

// Non valid because of starting dot
$valid = email_valid('.πŸ˜ƒ@ν…ŒμŠ€νŠΈ.γƒ†γ‚Ήγƒˆ');
var_dump($valid);
// bool(false)

email_safe

Check if an email is valid and returns the email in punycode if valid or false.
Uses email_parse in the background and returns safe_email key.

$valid = email_safe('πŸ˜ƒ@ν…ŒμŠ€νŠΈγ€‚γƒ†γ‚Ήγƒˆ');
var_dump($valid);
// string(34) "[email protected]"

// Non valid because of starting dot
$valid = email_safe('.πŸ˜ƒ@ν…ŒμŠ€νŠΈ.γƒ†γ‚Ήγƒˆ');
var_dump($valid);
// bool(false)

License

MIT