"PHP" / Говнокод #9994 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
function parseArray( $str ) {

	$out = array();

	$str = trim($str);
	if ( !$str ) return $out;

	$start = $startKey = false;
	$quot = $value = $key = '';
	$keys = $values = array();
	$k = 0;

	for($i=0; $i< mb_strlen($str, 'UTF-8');$i++ ) {

		$f = mb_substr( $str, $i, 1, 'UTF-8' );

		if ( $f!==false ) {

			if ( $start ) {

				if ( $f == $quot ) {

					$start = false;
					$values[$k] = $value;
					$value = $quot = '';

				} else $value .= $f;

			} elseif ( trim($f) ) {

				if ( $startKey ) {

					if ( (string)$f === (string)(int)$f  ) $key .= $f;
					else {

						$k = (int)$key;
						$keys[$k] = $k;

						$startKey = false;
					}

				} elseif ( $f == "'" || $f == '"' ) {
						$quot = $f;
						$value = '';
						$start = true;

				} elseif ( $f == '=' && mb_substr( $str, $i+1, 1, 'UTF-8' ) == '>' ) {

						$keys[$k] = $values[$k];
						$values[$k] = '';

						$i++;

				} elseif ( $f == ',' ) {

						$keys[$k] = isset($keys[$k])? $keys[$k]:$k;
						if ( (string)$keys[$k] === (string)(int)$keys[$k] && (int)$keys[$k]>$k ) $k = (int)$keys[$k];

						$k++;
				} elseif ( (string)$f === (string)(int)$f ) {
						$key = $f;
						$startKey = true;
				}
			}
		}
	}

	if ( sizeof($keys)!=sizeof($values) ) $keys[$k] = isset($keys[$k])? $keys[$k]:$k;

	$out = array_combine( $keys, $values );
	return $out;
}

Парсинг утф8-строки в массив.
Не, ну а чо, вот ведь понадобилось ведь
Все замерли в ожидании нового поста. Кто же? Кто же возьмёт даблгет, чёрт его подери?

Запостил: bot-minurast bot-minurast, (Updated )

Комментарии (0) RSS

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8