1 | <?php |
||
7 | class EmailLexer extends AbstractLexer |
||
8 | { |
||
9 | //ASCII values |
||
10 | const C_DEL = 127; |
||
11 | const C_NUL = 0; |
||
12 | const S_AT = 64; |
||
13 | const S_BACKSLASH = 92; |
||
14 | const S_DOT = 46; |
||
15 | const S_DQUOTE = 34; |
||
16 | const S_OPENPARENTHESIS = 49; |
||
17 | const S_CLOSEPARENTHESIS = 261; |
||
18 | const S_OPENBRACKET = 262; |
||
19 | const S_CLOSEBRACKET = 263; |
||
20 | const S_HYPHEN = 264; |
||
21 | const S_COLON = 265; |
||
22 | const S_DOUBLECOLON = 266; |
||
23 | const S_SP = 267; |
||
24 | const S_HTAB = 268; |
||
25 | const S_CR = 269; |
||
26 | const S_LF = 270; |
||
27 | const S_IPV6TAG = 271; |
||
28 | const S_LOWERTHAN = 272; |
||
29 | const S_GREATERTHAN = 273; |
||
30 | const S_COMMA = 274; |
||
31 | const S_SEMICOLON = 275; |
||
32 | const S_OPENQBRACKET = 276; |
||
33 | const S_CLOSEQBRACKET = 277; |
||
34 | const S_SLASH = 278; |
||
35 | const S_EMPTY = null; |
||
36 | const GENERIC = 300; |
||
37 | const CRLF = 301; |
||
38 | const INVALID = 302; |
||
39 | const ASCII_INVALID_FROM = 127; |
||
40 | const ASCII_INVALID_TO = 199; |
||
41 | |||
42 | /** |
||
43 | * US-ASCII visible characters not valid for atext (@link http://tools.ietf.org/html/rfc5322#section-3.2.3) |
||
44 | * |
||
45 | * @var array |
||
46 | */ |
||
47 | protected $charValue = array( |
||
48 | '(' => self::S_OPENPARENTHESIS, |
||
49 | ')' => self::S_CLOSEPARENTHESIS, |
||
50 | '<' => self::S_LOWERTHAN, |
||
51 | '>' => self::S_GREATERTHAN, |
||
52 | '[' => self::S_OPENBRACKET, |
||
53 | ']' => self::S_CLOSEBRACKET, |
||
54 | ':' => self::S_COLON, |
||
55 | ';' => self::S_SEMICOLON, |
||
56 | '@' => self::S_AT, |
||
57 | '\\' => self::S_BACKSLASH, |
||
58 | '/' => self::S_SLASH, |
||
59 | ',' => self::S_COMMA, |
||
60 | '.' => self::S_DOT, |
||
61 | '"' => self::S_DQUOTE, |
||
62 | '-' => self::S_HYPHEN, |
||
63 | '::' => self::S_DOUBLECOLON, |
||
64 | ' ' => self::S_SP, |
||
65 | "\t" => self::S_HTAB, |
||
66 | "\r" => self::S_CR, |
||
67 | "\n" => self::S_LF, |
||
68 | "\r\n" => self::CRLF, |
||
69 | 'IPv6' => self::S_IPV6TAG, |
||
70 | '{' => self::S_OPENQBRACKET, |
||
71 | '}' => self::S_CLOSEQBRACKET, |
||
72 | '' => self::S_EMPTY, |
||
73 | '\0' => self::C_NUL, |
||
74 | ); |
||
75 | |||
76 | protected $hasInvalidTokens = false; |
||
77 | |||
78 | protected $previous; |
||
79 | |||
80 | private static $nullToken = [ |
||
81 | 'value' => '', |
||
82 | 'type' => null, |
||
83 | 'position' => 0, |
||
84 | ]; |
||
85 | |||
86 | 248 | public function __construct() |
|
90 | |||
91 | 247 | public function reset() |
|
97 | |||
98 | 75 | public function hasInvalidTokens() |
|
102 | |||
103 | /** |
||
104 | * @param $type |
||
105 | * @throws \UnexpectedValueException |
||
106 | * @return boolean |
||
107 | */ |
||
108 | 64 | public function find($type) |
|
118 | |||
119 | /** |
||
120 | * getPrevious |
||
121 | * |
||
122 | * @return array token |
||
123 | */ |
||
124 | 143 | public function getPrevious() |
|
128 | |||
129 | /** |
||
130 | * moveNext |
||
131 | * |
||
132 | * @return boolean |
||
133 | */ |
||
134 | 247 | public function moveNext() |
|
142 | |||
143 | /** |
||
144 | * Lexical catchable patterns. |
||
145 | * |
||
146 | * @return string[] |
||
147 | */ |
||
148 | 1 | protected function getCatchablePatterns() |
|
160 | |||
161 | /** |
||
162 | * Lexical non-catchable patterns. |
||
163 | * |
||
164 | * @return string[] |
||
165 | */ |
||
166 | 1 | protected function getNonCatchablePatterns() |
|
170 | |||
171 | /** |
||
172 | * Retrieve token type. Also processes the token value if necessary. |
||
173 | * |
||
174 | * @param string $value |
||
175 | * @throws \InvalidArgumentException |
||
176 | * @return integer |
||
177 | */ |
||
178 | 246 | protected function getType(&$value) |
|
195 | |||
196 | 245 | protected function isValid($value) |
|
204 | |||
205 | /** |
||
206 | * @param $value |
||
207 | * @return bool |
||
208 | */ |
||
209 | 246 | protected function isNullType($value) |
|
217 | |||
218 | /** |
||
219 | * @param $value |
||
220 | * @return bool |
||
221 | */ |
||
222 | 218 | protected function isUTF8Invalid($value) |
|
230 | |||
231 | 1 | protected function getModifiers() |
|
235 | } |
||
236 |
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.