1. PHP / Говнокод #9994

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 20 Апреля 2012

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

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

    Ошибка компиляции комментария:
    1. Гости могут высказаться только во вторник, пятницу или субботу
    ava Где здесь C++, guest?!
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код