Вход Регистрация
* Taltos *

Обработка кода перед подсветкой

  1. //Функция удаляет пустые строки в начале и конце кода
  2.  
  3. function trim_code($code)
  4.  
  5. {
  6.  
  7. $code = explode("\n", $code);
  8.  
  9. $code_count = count($code);
  10.  
  11. if($code_count > 0)
  12.  
  13. {
  14.  
  15. //Удаляем пробелы и пустые строки в начале кода
  16.  
  17. $i = 0;
  18.  
  19. while(isset($code[$i]) AND trim($code[$i])=='')
  20.  
  21. {
  22.  
  23. unset($code[$i]);
  24.  
  25. $i++;
  26.  
  27. }
  28.  
  29. //Теперь удаляем в конце =)
  30.  
  31. $i = 0;
  32.  
  33. while(isset($code[$code_count-1-$i]) AND trim($code[$code_count-1-$i])=='')
  34.  
  35. {
  36.  
  37. unset($code[$code_count-1-$i]);
  38.  
  39. $i++;
  40.  
  41. }
  42.  
  43. }
  44.  
  45. return implode("\n", $code);
  46.  
  47. }
  48.  
  49.  
  50.  
  51. // Функция удаляет лишние пробелы перед строками не нарушая форматирование
  52.  
  53. function check_space($code)
  54.  
  55. {
  56.  
  57. $code = explode("\n", $code);
  58.  
  59. $spaces = array();
  60.  
  61. $code_count = count($code);
  62.  
  63. if($code_count > 0)
  64.  
  65. {
  66.  
  67. foreach($code AS $key=>$value)
  68.  
  69. {
  70.  
  71. if(trim($value) != '')
  72.  
  73. {
  74.  
  75. $letters = str_split($value);
  76.  
  77. $count = count($letters);
  78.  
  79. $i = 0;
  80.  
  81. while($letters[$i] == ' ')
  82.  
  83. {
  84.  
  85. $i++;
  86.  
  87. }
  88.  
  89. $spaces[] = $i;
  90.  
  91. }
  92.  
  93. else
  94.  
  95. $code[$key] = trim($value);
  96.  
  97. }
  98.  
  99. if(count($spaces)>0)
  100.  
  101. {
  102.  
  103. $min_sp = min($spaces);
  104.  
  105. if($min_sp > 0)
  106.  
  107. {
  108.  
  109. $new_code = array();
  110.  
  111. foreach($code AS $value)
  112.  
  113. {
  114.  
  115. if($value)
  116.  
  117. $new_code[] = mb_substr($value, $min_sp);
  118.  
  119. else
  120.  
  121. $new_code[] = $value;
  122.  
  123. }
  124.  
  125. $code = $new_code;
  126.  
  127. }
  128.  
  129. }
  130.  
  131. }
  132.  
  133. return implode("\n", $code);
  134.  
  135. }
  136.  
  137.  
  138.  
  139. function check_code()
  140.  
  141. {
  142.  
  143. $code = str_replace("\r\n", "\n", $code);
  144.  
  145. $code = trim_code($code);
  146.  
  147. $code = check_space($code);
  148.  
  149. return $code;
  150.  
  151. }
» Описание: од при подсветке нельзя обрабатывать функцией trim() - нарушается форматирование. Функция trim_code() делает это более корректно, удаляя только пустые строки.

При копировании из редактора код может содержать лишние пробелы перед каждой строкой, функция check_space() удаляет их не нарушая изначального форматирования.

Пример:
$some_code = check_code($some_code);
» Время добавления: 12 Марта 2015 в 11:21
» Посмотров: 1247
» textarea
» Рейтинг: [+0 | -0]
Комментарии [0]
Онлайн: 1
Реклама