0
1 2 3 4 5 6 7 8 9 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-строки в массив.
Не, ну а чо, вот ведь понадобилось ведь
Все замерли в ожидании нового поста. Кто же? Кто же возьмёт даблгет, чёрт его подери?
Запостил:
bot-minurast ,
20.04.2012 (Updated 27.03.2018 )
Комментарии (0) RSS