]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - misc/strings.php
Logs: show search pane (on desktop)
[irc/unrealircd/unrealircd-webpanel.git] / misc / strings.php
1 <?php
2
3 function to_slug($str)
4 {
5 return str_replace(['-', ' '], '_', strtolower($str));
6 }
7
8 /** Splits up a string by a space
9 * (chr 32)
10 *
11 * Syntax:
12 * split($string)
13 *
14 * Returns:
15 * array $tokens
16 */
17 function split($str, $delimiter = " ") : Array
18 {
19 return explode($delimiter,$str);
20 }
21
22 /**
23 *
24 * @param mixed $array
25 * @param mixed $delimiter
26 * @return string
27 */
28 function glue($array, $delimiter = " ")
29 {
30 $string = "";
31 foreach($array as $str)
32 {
33 if (!$str)
34 continue;
35 $string .= $str.$delimiter;
36 }
37 return trim($string,$delimiter);
38 }
39
40 /**
41 * Gets the relative path of the filename
42 * @param mixed $filename
43 * @return string
44 */
45 function get_relative_path($filename)
46 {
47 $relativepath = split($filename, "/");
48 foreach($relativepath as &$tok)
49 {
50 $isFinal = ($tok == "html") ? 1 : 0;
51 $tok = NULL;
52 if ($isFinal)
53 break;
54 }
55 $relativepath = glue($relativepath,"/");
56 return $relativepath;
57 }
58
59 /**
60 * Returns a `nick` if the string was in the syntax:
61 * nick!ident@host
62 * @param mixed $str
63 * @return mixed
64 */
65 function show_nick_only($str)
66 {
67 $x = strpos($str, "!");
68 if ($x !== false)
69 $str = substr($str, 0, $x);
70 return $str;
71 }
72
73 /**
74 * Figures out how long ago a given time was
75 * returns string example:
76 * - "32 minutes ago"
77 * - "5 hours ago"
78 * - "12 seconds ago"
79 */
80 function how_long_ago($timestamp)
81 {
82 $now = time();
83 $diff = $now - strtotime($timestamp);
84 $units = array(
85 31536000 => 'year',
86 2592000 => 'month',
87 604800 => 'week',
88 86400 => 'day',
89 3600 => 'hour',
90 60 => 'minute',
91 1 => 'second'
92 );
93
94 foreach ($units as $unit => $text) {
95 if ($diff < $unit) continue;
96 $numberOfUnits = floor($diff / $unit);
97 return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'').' ago';
98 }
99 }
100
101 /**
102 * Uses system time.
103 * Returns:
104 * - evening
105 * - morning
106 * - afternoon
107 */
108 function time_of_day()
109 {
110 $timeofday = "day"; // in case something went wrong? lol
111 $hour = date("H");
112 if ($hour >= 18 || $hour < 4)
113 $timeofday = "evening";
114 else if ($hour >= 4 && $hour < 12)
115 $timeofday = "morning";
116 else if ($hour >= 12 && $hour < 18)
117 $timeofday = "afternoon";
118
119 return $timeofday;
120 }
121
122
123 /**
124 * Concatenate a string to a string
125 */
126 function strcat(&$targ,$string) : void
127 { $targ .= $string; }
128
129
130 /**
131 * Concatenate a string to a string and limits the string to a certain length
132 */
133 function strlcat(&$targ,$string,$size) : void
134 {
135 strcat($targ,$string);
136 $targ = mb_substr($targ,0,$size);
137 }
138
139
140 /**
141 * Prefixes a string to a string
142 */
143 function strprefix(&$targ,$string) : void
144 { $targ = $string.$targ; }
145
146
147 /**
148 * Prefixes a string to a string and limits the string to a certain length
149 */
150 function strlprefix(&$targ,$string,$size) : void
151 {
152 if (sizeof($targ) >= $size)
153 return;
154
155 strprefix($targ,$string);
156 $targ = mb_substr($targ,0,$size);
157 }
158
159 /** Checks if the token provided is a bad pointer, by reference
160 * Returns Bool value true if it IS bad
161 *
162 * Syntax:
163 * BadPtr($variable)
164 *
165 * Returns:
166 * @
167 */
168 function BadPtr(&$tok)
169 {
170 if (!isset($tok) || empty($tok) || !$tok || strlen($tok) == 0)
171 return true;
172 return false;
173 }
174
175 /** This function takes a string, tokenizes
176 * it by a space (chr 32), removes the first
177 * word/token, and returns the result.
178 * Mostly used for string manipulation around
179 * the source.
180 *
181 * Syntax:
182 * rparv(String $sentence)
183 *
184 * Returns:
185 * string|false
186 */
187 function rparv($string)
188 {
189 $parv = split($string);
190 $first = strlen($parv[0]) + 1;
191 $string = substr($string, $first);
192 if ($string)
193 return $string;
194 return false;
195 }
196
197 /* Taken from https://www.aviran.org/stripremove-irc-client-control-characters/
198 * We may want to re-base it off our UnrealIRCd's one though.
199 */
200 function StripControlCharacters($text)
201 {
202 $controlCodes = array(
203 '/(\x03(?:\d{1,2}(?:,\d{1,2})?)?)/', // Color code
204 '/\x02/', // Bold
205 '/\x0F/', // Escaped
206 '/\x16/', // Italic
207 '/\x1F/' // Underline
208 );
209 return preg_replace($controlCodes,'',$text);
210 }