77 * @author Muhammet ŞAFAK <info@muhammetsafak.com.tr>
88 * @copyright Copyright © 2022 InitPHP
99 * @license http://initphp.github.io/license.txt MIT
10- * @version 1.0
10+ * @version 1.0.2
1111 * @link https://www.muhammetsafak.com.tr
1212 */
1313
@@ -65,7 +65,7 @@ trait RulesTrait
6565 ],
6666 ];
6767
68- private array $patterns = [
68+ protected array $patterns = [
6969 'uri' => '[A-Za-z0-9-\/_?&=]+',
7070 'slug' => '[-a-z0-9_-]',
7171 'url' => '[A-Za-z0-9-:.\/_?&=#]+',
@@ -81,7 +81,7 @@ trait RulesTrait
8181 'address' => '[\p{L}0-9\s.,()°-]+',
8282 'date_dmy' => '[0-9]{1,2}\-[0-9]{1,2}\-[0-9]{4}',
8383 'date_ymd' => '[0-9]{4}\-[0-9]{1,2}\-[0-9]{1,2}',
84- 'email' => '[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+[.]+ [a-z-A-Z]'
84+ 'email' => '[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+[.]? [a-z-A-Z]? '
8585 ];
8686
8787 protected function rule_integer($data): bool
@@ -167,13 +167,19 @@ protected function rule_mail($data): bool
167167 return (bool)filter_var((string)$data, FILTER_VALIDATE_EMAIL);
168168 }
169169
170- protected function rule_mailhost($data, $domain): bool
170+ protected function rule_mailhost($data, ... $domain): bool
171171 {
172172 if(filter_var($data, FILTER_VALIDATE_EMAIL)){
173- $parse = explode('@', $data);
174- $parseDNS = $parse[1] ?? null;
175- if(trim($parseDNS) === trim($domain)){
176- return true;
173+ $parse = explode('@', $data, 2);
174+ $mailHost = trim(($parse[1] ?? ''));
175+ foreach ($domain as $host) {
176+ $host = trim($host);
177+ if(empty($host)){
178+ continue;
179+ }
180+ if($mailHost === $host){
181+ return true;
182+ }
177183 }
178184 }
179185 return false;
@@ -184,15 +190,21 @@ protected function rule_url($data): bool
184190 return (bool)filter_var((string)$data, FILTER_VALIDATE_URL);
185191 }
186192
187- protected function rule_urlhost($data, $domain ): bool
193+ protected function rule_urlhost($data, ...$domains ): bool
188194 {
189195 if(filter_var($data, FILTER_VALIDATE_URL)){
190196 $host = parse_url($data, PHP_URL_HOST);
191- if($host === $domain){
192- return true;
193- }
194- if(mb_substr($host, -(mb_strlen($domain) + 1)) === '.' . $domain){
195- return true;
197+ foreach ($domains as $domain) {
198+ $domain = trim($domain);
199+ if(empty($domain)){
200+ continue;
201+ }
202+ if($domain === $host){
203+ return true;
204+ }
205+ if(mb_substr($host, (0 - (mb_strlen($domain) + 1))) === '.' . $domain){
206+ return true;
207+ }
196208 }
197209 }
198210 return false;
@@ -360,7 +372,7 @@ protected function rule_endwith($data, $endWith): bool
360372
361373 protected function rule_in($data, $search): bool
362374 {
363- if(is_string($data) && is_numeric($data)){
375+ if(is_string($data) || is_numeric($data)){
364376 return mb_stripos((string)$data, (string)$search) !== FALSE;
365377 }
366378 if(is_array($data)){
0 commit comments