From: Jason Woofenden Date: Thu, 4 Sep 2014 20:51:36 +0000 (-0400) Subject: make string_array utf8-compatible X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=commitdiff_plain;h=a99bf364a96d120f799fbc536ff4d9a19d797436 make string_array utf8-compatible --- 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; }