Skip to content

Commit 6140007

Browse files
author
Piotr Jura
committed
IsEmail expander
1 parent 977c06b commit 6140007

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
namespace Coduo\PHPMatcher\Matcher\Pattern\Expander;
4+
5+
use Coduo\PHPMatcher\Matcher\Pattern\PatternExpander;
6+
use Coduo\ToString\String;
7+
8+
class IsEmail implements PatternExpander
9+
{
10+
/**
11+
* @var null|string
12+
*/
13+
private $error;
14+
15+
/**
16+
* @param string $value
17+
* @return boolean
18+
*/
19+
public function match($value)
20+
{
21+
if (false === is_string($value)) {
22+
$this->error = sprintf("IsEmail expander require \"string\", got \"%s\".", new String($value));
23+
return false;
24+
}
25+
26+
if (false === $this->matchValue($value)) {
27+
$this->error = sprintf("string \"%s\" is not a valid e-mail address.", $value);
28+
return false;
29+
}
30+
31+
return true;
32+
}
33+
34+
/**
35+
* @return string|null
36+
*/
37+
public function getError()
38+
{
39+
return $this->error;
40+
}
41+
42+
/**
43+
* @param string $value
44+
* @return bool
45+
*/
46+
protected function matchValue($value)
47+
{
48+
try {
49+
return false !== filter_var($value, FILTER_VALIDATE_EMAIL);
50+
} catch (\Exception $e) {
51+
return false;
52+
}
53+
}
54+
}

src/Coduo/PHPMatcher/Parser/ExpanderInitializer.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class ExpanderInitializer
1919
"endsWith" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\EndsWith",
2020
"notEmpty" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\NotEmpty",
2121
"isDateTime" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\IsDateTime",
22+
"isEmail" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\IsEmail",
2223
"lowerThan" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\LowerThan",
2324
"greaterThan" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\GreaterThan",
2425
"inArray" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\InArray",

0 commit comments

Comments
 (0)