Guest User

Untitled

a guest
Jul 18th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. <?php
  2. namespace core;
  3.  
  4. class Utils {
  5. /**
  6. * Парсинг JSON-данных с учётом того, что они могут и не быть массивом/объектом
  7. *
  8. * @param string $string - JSON-строка
  9. * @param boolean $exception - в случае ошибки выдавать Exception, иначе false
  10. * @return mixed
  11. */
  12. public static function safe_json_decode($string, $exception = true) {
  13. $res = json_decode("[{$string}]");
  14. if (!is_array($res) or count($res) != 1) {
  15. if ($exception) throw new \Exception("invalid JSON (".mb_substr($string, 0, 8)."...)");
  16. else return false;
  17. }
  18. return $res[0];
  19. }
  20.  
  21. /**
  22. * Возвращает первый непустой аргумент
  23. *
  24. * @return mixed
  25. */
  26. public static function first_non_empty() {
  27. $vars = func_get_args();
  28. foreach($vars as $a) if(!empty($a)) return $a;
  29. return null;
  30. }
  31.  
  32.  
  33. /**
  34. * Запуск сессии, если существует сессионная кука
  35. *
  36. * @return boolean результат запуска
  37. */
  38. public static function session_start_if_exists() {
  39. if(isset($_COOKIE[session_name()])) {
  40. if(!isset($_SESSION)) session_start();
  41. return true;
  42. } elseif(isset($_REQUEST['PHP_SID'])) {
  43. if(isset($_SESSION)) session_write_close();
  44. session_id($_REQUEST['PHP_SID']);
  45. session_start();
  46. return true;
  47. } else {
  48. return false;
  49. }
  50. }
  51.  
  52. /**
  53. * Если входные данные не в UTF-8, то переводим в неё (предполагая, что они в 1251)
  54. *
  55. * @param string $text
  56. * @return string
  57. */
  58. public static function fix_encoding($text, $default_enc = 'Windows-1251') {
  59. $text = (string)$text;
  60. if($text and preg_match('/^.{1}/us', $text) != 1) {
  61. $text = mb_convert_encoding($text, 'UTF-8', $default_enc);
  62. }
  63. $text = str_replace("\x00", "", $text);
  64. return $text;
  65. }
  66.  
  67. /**
  68. * Проверка корректности регулярного выражения
  69. *
  70. * @param string $regexp
  71. * @return boolean
  72. */
  73. public static function is_preg_valid($regexp) { return (@preg_match($regexp,'') !== false); }
  74.  
  75. /**
  76. * Правильный эскейпинг строковых литералов для XPath
  77. *
  78. * @param string $string
  79. * @return $string
  80. */
  81. public static function xpath_escape($string) {
  82. if (strpos($string, "'") === false) return "'".$string."'";
  83. if (strpos($string, '"') === false) return '"'.$string.'"';
  84. return 'concat("'.str_replace('"', '",\'"\',"', $string).'")';
  85. }
  86. }
Add Comment
Please, Sign In to add comment