1<?php 2 3namespace Sabre\VObject; 4 5/** 6 * Useful utilities for working with various strings. 7 * 8 * @copyright Copyright (C) fruux GmbH (https://fruux.com/) 9 * @author Evert Pot (http://evertpot.com/) 10 * @license http://sabre.io/license/ Modified BSD License 11 */ 12class 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 66