comparison vendor/sabre/vobject/lib/StringUtil.php @ 7:430dbd5346f7

vendor sabre as distributed
author Charlie Root
date Sat, 13 Jan 2018 09:06:10 -0500
parents
children
comparison
equal deleted inserted replaced
6:cec75ba50afc 7:430dbd5346f7
1 <?php
2
3 namespace Sabre\VObject;
4
5 /**
6 * Useful utilities for working with various strings.
7 *
8 * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/).
9 * @author Evert Pot (http://evertpot.com/)
10 * @license http://sabre.io/license/ Modified BSD License
11 */
12 class StringUtil {
13
14 /**
15 * Returns true or false depending on if a string is valid UTF-8
16 *
17 * @param string $str
18 * @return bool
19 */
20 static public function isUTF8($str) {
21
22 // Control characters
23 if (preg_match('%[\x00-\x08\x0B-\x0C\x0E\x0F]%', $str)) {
24 return false;
25 }
26
27 return (bool)preg_match('%%u', $str);
28
29 }
30
31 /**
32 * This method tries its best to convert the input string to UTF-8.
33 *
34 * Currently only ISO-5991-1 input and UTF-8 input is supported, but this
35 * may be expanded upon if we receive other examples.
36 *
37 * @param string $str
38 * @return string
39 */
40 static public function convertToUTF8($str) {
41
42 $encoding = mb_detect_encoding($str , array('UTF-8','ISO-8859-1', 'WINDOWS-1252'), true);
43
44 switch($encoding) {
45 case 'ISO-8859-1' :
46 $newStr = utf8_encode($str);
47 break;
48 /* Unreachable code. Not sure yet how we can improve this
49 * situation.
50 case 'WINDOWS-1252' :
51 $newStr = iconv('cp1252', 'UTF-8', $str);
52 break;
53 */
54 default :
55 $newStr = $str;
56
57 }
58
59 // Removing any control characters
60 return (preg_replace('%(?:[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', '', $newStr));
61
62 }
63
64 }
65