Mercurial > hg > rc1
comparison plugins/libcalendaring/lib/Sabre/VObject/StringUtil.php @ 4:888e774ee983
libcalendar plugin as distributed
| author | Charlie Root |
|---|---|
| date | Sat, 13 Jan 2018 08:57:56 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 3:f6fe4b6ae66a | 4:888e774ee983 |
|---|---|
| 1 <?php | |
| 2 | |
| 3 namespace Sabre\VObject; | |
| 4 | |
| 5 /** | |
| 6 * Useful utilities for working with various strings. | |
| 7 * | |
| 8 * @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/). | |
| 9 * @author Evert Pot (http://evertpot.com/) | |
| 10 * @license http://code.google.com/p/sabredav/wiki/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 function isUTF8($str) { | |
| 21 | |
| 22 // First check.. mb_check_encoding | |
| 23 if (!mb_check_encoding($str, 'UTF-8')) { | |
| 24 return false; | |
| 25 } | |
| 26 | |
| 27 // Control characters | |
| 28 if (preg_match('%(?:[\x00-\x08\x0B-\x0C\x0E\x0F])%', $str)) { | |
| 29 return false; | |
| 30 } | |
| 31 | |
| 32 return true; | |
| 33 | |
| 34 } | |
| 35 | |
| 36 /** | |
| 37 * This method tries its best to convert the input string to UTF-8. | |
| 38 * | |
| 39 * Currently only ISO-5991-1 input and UTF-8 input is supported, but this | |
| 40 * may be expanded upon if we receive other examples. | |
| 41 * | |
| 42 * @param string $str | |
| 43 * @return string | |
| 44 */ | |
| 45 static function convertToUTF8($str) { | |
| 46 | |
| 47 $encoding = mb_detect_encoding($str , array('UTF-8','ISO-8859-1'), true); | |
| 48 | |
| 49 if ($encoding === 'ISO-8859-1') { | |
| 50 $newStr = utf8_encode($str); | |
| 51 } else { | |
| 52 $newStr = $str; | |
| 53 } | |
| 54 | |
| 55 // Removing any control characters | |
| 56 return (preg_replace('%(?:[\x00-\x08\x0B-\x0C\x0E\x0F])%', '', $newStr)); | |
| 57 | |
| 58 } | |
| 59 | |
| 60 } | |
| 61 |
