1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Jasny; |
4
|
|
|
|
5
|
|
|
/** |
6
|
|
|
* Check if a string starts with a substring |
7
|
|
|
* |
8
|
|
|
* @param string $string |
9
|
|
|
* @param string $substr |
10
|
|
|
* @return boolean |
11
|
|
|
*/ |
12
|
|
|
function str_starts_with($string, $substr) |
|
|
|
|
13
|
|
|
{ |
14
|
1 |
|
return strpos($string, $substr) === 0; |
15
|
|
|
} |
16
|
|
|
|
17
|
|
|
/** |
18
|
|
|
* Check if a string ends with a substring |
19
|
|
|
* |
20
|
|
|
* @param string $string |
21
|
|
|
* @param string $substr |
22
|
|
|
* @return boolean |
23
|
|
|
*/ |
24
|
|
|
function str_ends_with($string, $substr) |
|
|
|
|
25
|
|
|
{ |
26
|
1 |
|
return stripos($string, $substr) === strlen($string) - strlen($substr); |
27
|
|
|
} |
28
|
|
|
|
29
|
|
|
/** |
30
|
|
|
* Check if a string contains a substring |
31
|
|
|
* |
32
|
|
|
* @param string $string |
33
|
|
|
* @param string $substr |
34
|
|
|
* @return boolean |
35
|
|
|
*/ |
36
|
|
|
function str_contains($string, $substr) |
|
|
|
|
37
|
|
|
{ |
38
|
1 |
|
return strpos($string, $substr) !== false; |
39
|
|
|
} |
40
|
|
|
|
41
|
|
|
/** |
42
|
|
|
* Replace characters with accents with normal characters. |
43
|
|
|
* |
44
|
|
|
* @param string $string |
45
|
|
|
* @return string |
46
|
|
|
*/ |
47
|
|
|
function str_remove_accents($string) |
|
|
|
|
48
|
|
|
{ |
49
|
|
|
$from = [ |
50
|
2 |
|
'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', |
51
|
2 |
|
'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', |
52
|
2 |
|
'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', |
53
|
2 |
|
'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', |
54
|
2 |
|
'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', |
55
|
2 |
|
'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', |
56
|
2 |
|
'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', |
57
|
2 |
|
'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', |
58
|
2 |
|
'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', |
59
|
2 |
|
'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', |
60
|
2 |
|
'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', |
61
|
2 |
|
'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', |
62
|
2 |
|
'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', |
63
|
2 |
|
'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', |
64
|
|
|
'ǿ' |
65
|
2 |
|
]; |
66
|
|
|
|
67
|
|
|
$to = [ |
68
|
2 |
|
'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', |
69
|
2 |
|
'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', |
70
|
2 |
|
'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', |
71
|
2 |
|
'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', |
72
|
2 |
|
'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', |
73
|
2 |
|
'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', |
74
|
2 |
|
'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', |
75
|
2 |
|
'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', |
76
|
2 |
|
'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', |
77
|
2 |
|
'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', |
78
|
2 |
|
'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', |
79
|
2 |
|
'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', |
80
|
2 |
|
'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', |
81
|
2 |
|
'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', |
82
|
|
|
'o' |
83
|
2 |
|
]; |
84
|
|
|
|
85
|
2 |
|
return str_replace($from, $to, $string); |
86
|
|
|
} |
87
|
|
|
|
88
|
|
|
/** |
89
|
|
|
* Generate a URL friendly slug from the given string |
90
|
|
|
* |
91
|
|
|
* @param string $string |
92
|
|
|
* @return string |
93
|
|
|
*/ |
94
|
|
|
function str_slug($string, $glue = '-') |
|
|
|
|
95
|
|
|
{ |
96
|
1 |
|
$normalized = str_remove_accents($string); |
97
|
1 |
|
$lower = strtolower($normalized); |
98
|
1 |
|
return preg_replace('/[\W_]+/', $glue, $lower); |
99
|
|
|
} |
100
|
|
|
|
This check looks for functions that have already been defined in other files.
Some Codebases, like WordPress, make a practice of defining functions multiple times. This may lead to problems with the detection of function parameters and types. If you really need to do this, you can mark the duplicate definition with the
@ignore
annotation.See also the PhpDoc documentation for @ignore.