1: <?php
2: /**
3: * Validate Length
4: *
5: * @param string $string
6: * @param int $minimum
7: * @param int $maximum
8: *
9: * @return bool
10: */
11: function oc_validate_length(string $string, int $minimum, int $maximum): bool {
12: return strlen(trim($string)) >= $minimum && strlen(trim($string)) <= $maximum;
13: }
14:
15: /**
16: * Validate Email
17: *
18: * @param string $email
19: *
20: * @return bool
21: */
22: function oc_validate_email(string $email): bool {
23: if (oc_strrpos($email, '@') === false) {
24: return false;
25: }
26:
27: $local = oc_substr($email, 0, oc_strrpos($email, '@'));
28:
29: $domain = oc_substr($email, (oc_strrpos($email, '@') + 1));
30:
31: $email = $local . '@' . idn_to_ascii($domain, IDNA_NONTRANSITIONAL_TO_ASCII, INTL_IDNA_VARIANT_UTS46);
32:
33: return filter_var($email, FILTER_VALIDATE_EMAIL);
34: }
35:
36: /**
37: * Validate IP
38: *
39: * @param string $ip
40: *
41: * @return bool
42: */
43: function oc_validate_ip(string $ip): bool {
44: return filter_var($ip, FILTER_VALIDATE_IP);
45: }
46:
47: /**
48: * Validate URL
49: *
50: * @param string $filename
51: *
52: * @return bool
53: */
54: function oc_validate_filename(string $filename): bool {
55: return !preg_match('/[^a-zA-Z\p{Cyrillic}0-9\.\-\_]+/u', $filename);
56: }
57:
58: /**
59: * Validate URL
60: *
61: * @param string $url
62: *
63: * @return bool
64: */
65: function oc_validate_url(string $url): bool {
66: return filter_var($url, FILTER_VALIDATE_URL);
67: }
68:
69: /**
70: * Validate SEO URL
71: *
72: * @param string $keyword
73: *
74: * @return bool
75: */
76: function oc_validate_seo_url(string $keyword): bool {
77: return !preg_match('/[^\p{Latin}\p{Cyrillic}\p{Greek}0-9\/\.\-\_]+/u', $keyword);
78: }
79: