Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace core;
- class Utils {
- /**
- * Парсинг JSON-данных с учётом того, что они могут и не быть массивом/объектом
- *
- * @param string $string - JSON-строка
- * @param boolean $exception - в случае ошибки выдавать Exception, иначе false
- * @return mixed
- */
- public static function safe_json_decode($string, $exception = true) {
- $res = json_decode("[{$string}]");
- if (!is_array($res) or count($res) != 1) {
- if ($exception) throw new \Exception("invalid JSON (".mb_substr($string, 0, 8)."...)");
- else return false;
- }
- return $res[0];
- }
- /**
- * Возвращает первый непустой аргумент
- *
- * @return mixed
- */
- public static function first_non_empty() {
- $vars = func_get_args();
- foreach($vars as $a) if(!empty($a)) return $a;
- return null;
- }
- /**
- * Запуск сессии, если существует сессионная кука
- *
- * @return boolean результат запуска
- */
- public static function session_start_if_exists() {
- if(isset($_COOKIE[session_name()])) {
- if(!isset($_SESSION)) session_start();
- return true;
- } elseif(isset($_REQUEST['PHP_SID'])) {
- if(isset($_SESSION)) session_write_close();
- session_id($_REQUEST['PHP_SID']);
- session_start();
- return true;
- } else {
- return false;
- }
- }
- /**
- * Если входные данные не в UTF-8, то переводим в неё (предполагая, что они в 1251)
- *
- * @param string $text
- * @return string
- */
- public static function fix_encoding($text, $default_enc = 'Windows-1251') {
- $text = (string)$text;
- if($text and preg_match('/^.{1}/us', $text) != 1) {
- $text = mb_convert_encoding($text, 'UTF-8', $default_enc);
- }
- $text = str_replace("\x00", "", $text);
- return $text;
- }
- /**
- * Проверка корректности регулярного выражения
- *
- * @param string $regexp
- * @return boolean
- */
- public static function is_preg_valid($regexp) { return (@preg_match($regexp,'') !== false); }
- /**
- * Правильный эскейпинг строковых литералов для XPath
- *
- * @param string $string
- * @return $string
- */
- public static function xpath_escape($string) {
- if (strpos($string, "'") === false) return "'".$string."'";
- if (strpos($string, '"') === false) return '"'.$string.'"';
- return 'concat("'.str_replace('"', '",\'"\',"', $string).'")';
- }
- }
Add Comment
Please, Sign In to add comment