From a99bf364a96d120f799fbc536ff4d9a19d797436 Mon Sep 17 00:00:00 2001 From: Jason Woofenden Date: Thu, 4 Sep 2014 16:51:36 -0400 Subject: [PATCH] make string_array utf8-compatible --- string_array.php | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/string_array.php b/string_array.php index 2e4a8e3..4f9081d 100644 --- a/string_array.php +++ b/string_array.php @@ -16,27 +16,33 @@ # along with this program. If not, see . -# This file contains code to convert an array into a string, and back again. - -require_once(__DIR__ . '/binary.php'); +# This file contains code to convert an array of strings into a string, and back again. function string_to_array($data) { - $header_count = pop_int($data); + $pos = 0; + $max = strlen($data); $out = array(); - while($header_count--) { - $size = pop_int($data); - $out[] = substr($data, 0, $size); - $data = substr($data, $size); + while($pos < $max) { + $sep = stripos($data, ' ', $pos); + if ($sep == -1 || $sep == $pos) { + return $out; + } + $size = (int) substr($data, $pos, $sep - $pos); + $pos = $sep + 1; + $out[] = substr($data, $pos, $size); + $pos += $size; } return $out; } function array_to_string($array) { - $ret = to_raw_int(count($array)); - foreach($array as $element) { - $ret .= to_raw_int(strlen($element)); - $ret .= $element; - } + $ret = ''; + foreach($array as &$element) { + if (is_string($element)) { + $ret .= strlen($element) . ' '; + $ret .= $element; + } + } unset ($element); return $ret; } -- 1.7.10.4