/web/lib/common.php

https://bitbucket.org/lishnih/phpndt.yii2 · PHP · 171 lines · 116 code · 20 blank · 35 comment · 30 complexity · 08ec7a0feaba38b2a8c430fef5d87cf2 MD5 · raw file

  1. <?php // Stan 2004-08-09
  2. /**
  3. * @package PHP_Common
  4. * @version 0.26
  5. * @date 2011-02-16
  6. *
  7. * @author Stan Ovchinnikov
  8. * @email lishnih@gmail.com
  9. * @copyright 2004—2011
  10. */
  11. // Скрипт объявляет глобальные переменные:
  12. // $phpcommon_errors
  13. // $phpcommon_old_error_handler
  14. // Функции:
  15. // phpCommonExitHandler phpCommonErrorHandler
  16. // print_rb print_ra print_rt print_sh
  17. // sprint_ra sprint_rt
  18. // И следующие константы:
  19. define( 'PHP_COMMON', dirname( __FILE__ ) ); // Вход с скрипт
  20. define( 'ERROR', E_USER_ERROR ); // Ошибка
  21. define( 'WARNING', E_USER_WARNING ); // Предупреждение
  22. define( 'NOTICE', E_USER_NOTICE ); // Диалог пользователя
  23. // define( 'PHPCOMMON_ERRORSMAILTO', 'root@localhost' );
  24. define( 'PHPCOMMON_ERRORSMAILFLAG', E_ALL ^ E_USER_NOTICE );
  25. // Если произойдёт любая из указанных ошибок (PHPCOMMON_ERRORSMAILFLAG),
  26. // то будет отправлен отчёт получателю (PHPCOMMON_ERRORSMAILTO)
  27. // Закомментируйте мыло или флаги, если не хотите получать отчёты
  28. // Некоторые параметры для скрипта передаются через константы
  29. // PHPCOMMON_ALWAYSEXPANDEDSTRING - Обработчик ошибок выведет развёрнутый текст
  30. // ob_start( 'ob_gzhandler' ); // Добавляем сжатие страницы
  31. error_reporting ( E_ALL ); // Ошибки, которые будут выводиться на экран
  32. /////////////////////////////////////////
  33. //////// Функции вывода массивов ////////
  34. /////////////////////////////////////////
  35. // Эта функция подобна вызывает print_ra для всех переданных аргументов
  36. function print_rb () {
  37. echo '<table border="1">';
  38. for ( $i = 0; $i < func_num_args(); $i++ ) {
  39. echo "\n<tr><td>$i<td>";
  40. print_ra( func_get_arg( $i ) );
  41. } // for
  42. echo "\n</table>\n";
  43. } // function
  44. // Обёртка к функции print_r
  45. function print_ra ( $array, $params = null ) {
  46. echo sprint_ra( $array, $params );
  47. } // function
  48. function sprint_ra ( $array, $params = null ) {
  49. if ( $array === False ) return '<i>False</i>';
  50. if ( $array === True ) return '<i>True</i>';
  51. if ( $array === NULL ) return '<i>NULL</i>';
  52. if ( $array === '' ) return '<i>empty</i>';
  53. if ( is_numeric( $params ) )
  54. $max_string = (int) $params;
  55. elseif ( is_string( $params ) )
  56. $params = explode( ',', $params );
  57. if ( is_object( $array ) or is_array( $array ) ) {
  58. $content = '<table border="1">';
  59. foreach ( $array as $key => $val ) {
  60. $content .= "\n <tr><td>$key<td>";
  61. $content .= sprint_ra( $val, $params );
  62. } // foreach
  63. $content .= "\n</table>\n";
  64. } elseif ( is_string( $array ) ) {
  65. if ( is_array( $params ) )
  66. foreach ( $params as $val ) {
  67. if ( is_numeric( $val ) ) $max_string = (int) $val;
  68. elseif ( $val == 'htmlchars' ) $htmlchars = true;
  69. elseif ( $val == 'strip' ) $strip = true;
  70. elseif ( $val == 'nopre' ) $nopre = true;
  71. } // foreach
  72. if ( isset( $htmlchars ) )
  73. $array = htmlspecialchars( $array );
  74. if ( isset( $strip ) )
  75. $array = strip_tags( $array );
  76. if ( isset( $max_string ) and strlen( $array ) > $max_string ) {
  77. $array = strip_tags( $array );
  78. $array = substr( $array, 0, $max_string ) . '<span title="' . strip_tags( $array ) . '">...</span>';
  79. } // if
  80. $content = isset( $nopre ) ? $array : "<pre>$array</pre>";
  81. } else
  82. $content = $array;
  83. return $content;
  84. } // function
  85. // Эта функция выводит структурированные массивы в виде таблицы
  86. // действительно только для массивов вида array( 0 => array(), 1 => array() )
  87. function print_rt ( $array ) {
  88. echo sprint_rt( $array );
  89. } // function
  90. function sprint_rt ( $array ) {
  91. if ( !is_array( $array ) ) return '<i>must be array</i>';
  92. if ( $array === '' ) return '<i>empty</i>';
  93. if ( !is_array( current( $array ) ) )
  94. $array = array( '' => $array );
  95. $content = '<table border="1">
  96. <tr>';
  97. $a_keys = array_keys( current( $array ) );
  98. $content .= "\n <th>#";
  99. foreach ( $a_keys as $val )
  100. $content .= "\n <th>$val";
  101. foreach ( $array as $key => $val ) {
  102. $content .= "\n<tr>\n <td><i>$key</i>";
  103. foreach ( $val as $val )
  104. $content .= "\n <td>" . sprint_ra( $val, 'nopre' );
  105. } // foreach
  106. $content .= "\n</table>\n";
  107. return $content;
  108. } // function
  109. //////////////////////////////////////
  110. //////// Функции вывода строк ////////
  111. //////////////////////////////////////
  112. // Эта функция выводит hex-коды символов строки
  113. function print_sh ( $str, $c = 16 ) {
  114. echo '<table border="1">
  115. <tr><td><table border="1" cellpadding="3">';
  116. for ( $i = 0; $i < strlen( $str ); $i++ ) {
  117. if ( $i % $c == 0 )
  118. echo "\n<tr>";
  119. echo '<td>' . sprintf( '%02X', ord( $str[$i] ) );
  120. } // for
  121. echo '</table>
  122. <td><table border="1" cellpadding="3">';
  123. if ( function_exists( 'mb_detect_encoding' ) ) {
  124. $ec = mb_detect_encoding( $str );
  125. echo "\n<tr>";
  126. for ( $i = $j = 0; $i < mb_strlen( $str, $ec ); $i++, $j += $cl ) {
  127. if ( $j >= $c ) {
  128. echo "\n<tr>";
  129. $j -= $c;
  130. if ( $j > 1 ) echo "<td colspan=$j>";
  131. elseif ( $j ) echo "<td>";
  132. } // if
  133. $char = mb_substr( $str, $i, 1, $ec );
  134. $cl = strlen( $char );
  135. echo $cl > 1 ? "<td colspan=$cl>" : '<td>';
  136. echo ord( $char ) < 32 ? '[]' : $char;
  137. } // for
  138. } else {
  139. for ( $i = 0; $i < strlen( $str ); $i++ ) {
  140. if ( $i % $c == 0 )
  141. echo "\n<tr>";
  142. echo '<td>';
  143. echo ord( $str[$i] ) < 32 ? '[]' : $str[$i];
  144. } // for
  145. } // if
  146. echo '</table>
  147. </table>';
  148. if ( isset( $ec ) )
  149. echo "\nКодировка: $ec<br />\n";
  150. } // function
  151. ?>