1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11:
12:
13: namespace Pry\Util;
14:
15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26: class Strings
27: {
28:
29: 30: 31: 32: 33: 34: 35:
36: public static function slashes($chaine)
37: {
38: if (!get_magic_quotes_gpc())
39: $chaine = addslashes($chaine);
40:
41: return $chaine;
42: }
43:
44: 45: 46: 47: 48: 49: 50: 51:
52: public static function clean($string, $delimiter = "_")
53: {
54:
55:
56: $string = str_replace("'", ' ', $string);
57:
58: $cleanStr = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
59: $cleanStr = trim(strtolower($cleanStr));
60: $cleanStr = preg_replace("/[^a-z0-9\/_|+ -]/", '', $cleanStr);
61: $cleanStr = preg_replace("/[\/_|+ -]+/", $delimiter, $cleanStr);
62:
63: return $cleanStr;
64: }
65:
66: 67: 68: 69: 70: 71: 72: 73: 74:
75: public static function cut($chaine, $taillemax, $end = "...")
76: {
77: if (strlen($chaine) >= $taillemax)
78: {
79: $chaine = substr($chaine, 0, $taillemax);
80: $espace = strrpos($chaine, " ");
81: $chaine = trim(substr($chaine, 0, $espace) . $end);
82: }
83: return $chaine;
84: }
85:
86: 87: 88: 89: 90: 91: 92: 93:
94: public static function generate($taille)
95: {
96:
97:
98: $cons = 'bBcCdDfFgGhHjJkKlLmMnNoOpPqQrRsStTvVwWxXzZ@!#$%123465789';
99:
100: $voy = 'aAeEuUyY123465789';
101: $genere = '';
102: $genere.= $cons[rand(0, 41)];
103: for ($i = 1; $i <= ($taille - 1); $i++) {
104: if ($i % 2 == 0)
105: $genere.=$cons[(rand(0, strlen($cons) - 1))];
106: else
107: $genere.=$voy[(rand(0, strlen($voy) - 1))];
108: }
109: return $genere;
110: }
111:
112: 113: 114: 115: 116: 117:
118: public static function camelize($string)
119: {
120: return preg_replace("/[_|\s]([a-z0-9])/e", "strtoupper('\\1')", strtolower($string));
121: }
122:
123: 124: 125: 126: 127: 128:
129: public static function geekize($string)
130: {
131: $string = strtolower($string);
132: $normal = array('a', 'e', 't', 'l', 's', 'o');
133: $geek = array('4', '3', '7', '1', '$', '0');
134: return str_replace($normal, $geek, $string);
135: }
136:
137: 138: 139: 140: 141: 142: 143:
144: public static function hasTooMuchCaps($string)
145: {
146: $seuil = strlen($string) / 2;
147: $correspondance = similar_text($string, strtolower($string));
148: if ($correspondance < $seuil)
149: return strtolower($string);
150:
151: return $string;
152: }
153:
154: 155: 156: 157: 158: 159:
160: public static function isUpper($string)
161: {
162: if (preg_match("/[a-z]/", $string) > 0)
163: return false;
164: return true;
165: }
166:
167: 168: 169: 170: 171: 172:
173: public static function isLower($string)
174: {
175: if (preg_match("/[A-Z]/", $string) > 0)
176: return false;
177: return true;
178: }
179:
180: 181: 182: 183: 184: 185: 186:
187: public static function isIp($ip)
188: {
189: $motif = '`^([0-9]{1,3}\.){3}[0-9]{1,3}$`';
190: if (preg_match($motif, $ip))
191: {
192: $ipArray = explode(".", $ip);
193: for ($i = 0; $i < 4; $i++)
194: if ($ipArray[$i] > 255)
195: return false;
196:
197: return true;
198: }
199: else
200: return false;
201: }
202:
203: 204: 205: 206: 207: 208: 209:
210: public static function isMac($mac, $separator = '-')
211: {
212: $motif = '`^([[:xdigit:]]{2}\\' . $separator . '){5}[[:xdigit:]]{2}$`';
213: if (preg_match($motif, $mac))
214: return true;
215:
216: return false;
217: }
218:
219: 220: 221: 222: 223: 224: 225: 226:
227: public static function isMail($mail, $dot = true)
228: {
229: if (function_exists('filter_var'))
230: {
231: if (filter_var($mail, FILTER_VALIDATE_EMAIL))
232: {
233: if ($dot)
234: {
235: $chaine = explode('@', $mail);
236: $domain = $chaine[1];
237: if (strpos($domain, '.'))
238: return true;
239:
240: return false;
241: }
242:
243: return true;
244: }
245: else
246: {
247: if (!$dot)
248: return self::checkmail($mail, false);
249: }
250: }
251: else
252: {
253: return self::checkmail($mail);
254: }
255:
256: return false;
257: }
258:
259: private static function checkmail($mail, $dot = true)
260: {
261: $atom = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';
262: $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';
263: $regex = '/^' . $atom . '+(\.' . $atom . '+)*@(' . $domain . '{1,63}\.)+' . $domain . '{2,63}$/i';
264: $regexNoDot = '/^' . $atom . '+(\.' . $atom . '+)*@(' . $domain . '{1,63})+' . $domain . '{2,63}$/i';
265: if (preg_match($regex, $mail))
266: return true;
267: if (!$dot && preg_match($regexNoDot, $mail))
268: return true;
269: }
270:
271: 272: 273: 274: 275: 276: 277:
278: public static function isComplex($string)
279: {
280: if (preg_match("`^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{6,}$`", $string))
281: return true;
282:
283: return false;
284: }
285:
286: 287: 288: 289: 290: 291: 292:
293: public static function date2Mysql($date, $format)
294: {
295: $dt = \DateTime::createFromFormat($format, $date);
296: if ($dt)
297: return $dt->format("Y-m-d");
298:
299: return false;
300: }
301:
302: 303: 304: 305: 306: 307: 308:
309: public static function dateTime2Array($datetime, $format = 'fr', $short = false)
310: {
311: list($date, $heure) = explode(' ', $datetime);
312: list($y, $m, $d) = explode('-', $date);
313: list($h, $min, $s) = explode(':', $heure);
314: $tabRet = array();
315: switch ($format)
316: {
317: case 'fr' :
318: {
319: if ($short)
320: {
321: $tabRet[] = $d . '/' . $m;
322: $tabRet[] = $h . 'h' . $min;
323: }
324: else
325: {
326: $tabRet[] = $d . '/' . $m . '/' . $y;
327: $tabRet[] = $h . ':' . $min . ':' . $s;
328: }
329: break;
330: }
331:
332: case 'en' :
333: {
334: if ($short)
335: {
336: $tabRet[] = $m . '/' . $d;
337: $tabRet[] = $h . 'h' . $min;
338: }
339: else
340: {
341: $tabRet[] = $m . '/' . $d . '/' . $y;
342: $tabRet[] = $h . ':' . $min . ':' . $s;
343: }
344: break;
345: }
346: }
347: return $tabRet;
348: }
349:
350: 351: 352: 353: 354: 355:
356: public static function reduceDoubleSlashes($chaine)
357: {
358: return preg_replace("#(^|[^:])//+#", "\\1/", $chaine);
359: }
360:
361: 362: 363: 364: 365:
366: public function str2hex($str)
367: {
368: $retval = '';
369: $length = strlen($str);
370:
371: for ($idx = 0; $idx < $length; $idx++)
372: $retval .= str_pad(base_convert(ord($str[$idx]), 10, 16), 2, '0', STR_PAD_LEFT);
373:
374: return $retval;
375: }
376:
377: 378: 379: 380: 381: 382:
383: public function toUTF8($str)
384: {
385: $encoding = mb_detect_encoding($str, mb_detect_order(), true);
386: if ($encoding != 'UTF-8')
387: {
388: if ($encoding)
389: $str = mb_convert_encoding($str, 'UTF-8', $encoding);
390: else
391: $str = mb_convert_encoding($str, 'UTF-8');
392: }
393: return $str;
394: }
395:
396: }