- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 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-строки в массив.
Не, ну а чо, вот ведь понадобилось ведь
Все замерли в ожидании нового поста. Кто же? Кто же возьмёт даблгет, чёрт его подери?
Комментарии (0) RSS
Добавить комментарий