Helper::translit()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 19
dl 0
loc 22
rs 9.6333
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
/**
3
 * Useful functions
4
 *
5
 * @file      Helper.php
6
 *
7
 * PHP version 8.0+
8
 *
9
 * @author    Alexander Yancharuk <alex at itvault dot info>
10
 * @copyright © 2012-2021 Alexander Yancharuk
11
 * @date      Сбт Апр 21 20:59:37 2012
12
 * @license   The BSD 3-Clause License
13
 *            <https://tldrlegal.com/license/bsd-3-clause-license-(revised)>
14
 */
15
16
namespace Veles;
17
18
/**
19
 * Useful functions
20
 *
21
 * @author  Alexander Yancharuk <alex at itvault dot info>
22
 */
23
class Helper
24
{
25
	/**
26
	 * Generate random symbol sequence given length
27
	 *
28
	 * By default setting is for Blowfish salt generate
29
	 *
30
	 * @param int    $length  String length
31
	 * @param string $letters Group of symbols
32
	 *
33
	 * @return string
34
	 */
35
	public static function genStr(
36
		$length = 22,
37
		$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./'
38
	) {
39
		return substr(str_shuffle(str_repeat($letters, 5)), 0, $length);
40
	}
41
42
	/**
43
	 * Email check
44
	 *
45
	 * @param string $email
46
	 * @return bool
47
	 */
48
	public static function validateEmail($email)
49
	{
50
		return (bool) preg_match(
51
			'/^(?:[a-zA-Z0-9]|_|\-|\.)+@(?:(?:[a-z0-9_]|\-)+\.)+[a-z]{2,6}$/',
52
			$email
53
		);
54
	}
55
56
	/**
57
	 * Check email-domain
58
	 *
59
	 * @param string $email
60
	 * @return bool
61
	 */
62
	public static function checkEmailDomain($email)
63
	{
64
		list(, $domain) = explode('@', $email);
65
66
		return checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A');
67
	}
68
69
	/**
70
	 * Translate cyrillic into translit by GOST 7.79-2000 standard
71
	 *
72
	 * @param string $string
73
	 * @return string
74
	 */
75
	public static function translit($string)
76
	{
77
		$symbols = [
78
			'А'=>'A','Б'=>'B','В'=>'V','Г'=>'G',
79
			'Д'=>'D','Е'=>'E','Ё'=>'YO','Ж'=>'ZH','З'=>'Z','И'=>'I',
80
			'Й'=>'J','К'=>'K','Л'=>'L','М'=>'M','Н'=>'N',
81
			'О'=>'O','П'=>'P','Р'=>'R','С'=>'S','Т'=>'T',
82
			'У'=>'U','Ф'=>'F','Х'=>'H','Ц'=>'CZ','Ч'=>'CH',
83
			'Ш'=>'SH','Щ'=>'SHH','Ъ'=>'','Ы'=>'Y','Ь'=>'',
84
			'Э'=>'E','Ю'=>'YU','Я'=>'YA','а'=>'a','б'=>'b',
85
			'в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'yo','ж'=>'zh',
86
			'з'=>'z','и'=>'i','й'=>'j','к'=>'k','л'=>'l',
87
			'м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r',
88
			'с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'h',
89
			'ц'=>'ts','ч'=>'ch','ш'=>'sh','щ'=>'shh','ъ'=>'',
90
			'ы'=>'y','ь'=>'','э'=>'e','ю'=>'yu','я'=>'ya',
91
			' '=>'-','"'=>'','.'=>'',','=>'','!'=>'','?'=>'',
92
			'('=>'',')'=>'','#'=>'','@'=>'','*'=>'','&'=>'',
93
			'['=>'',']'=>'',':'=>'',';'=>'','<'=>'','>'=>'',
94
			'+'=>''
95
		];
96
		return strtr(mb_strtolower($string, 'UTF-8'), $symbols);
97
	}
98
99
	/**
100
	 * Method for alias generation
101
	 *
102
	 * @param string $url URL для алиаса
103
	 *
104
	 * @return string
105
	 */
106
	public static function makeAlias($url)
107
	{
108
		$alias = htmlspecialchars_decode($url);
109
		$alias = preg_replace('/[^a-z^а-яё^\d^ ^-]/iu', '', $alias);
110
		$alias = Helper::translit($alias);
111
		$alias = preg_replace('/\-+/', '-', $alias);
112
113
		return $alias;
114
	}
115
}
116