JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
make string_array utf8-compatible
authorJason Woofenden <jason@jasonwoof.com>
Thu, 4 Sep 2014 20:51:36 +0000 (16:51 -0400)
committerJason Woofenden <jason@jasonwoof.com>
Thu, 4 Sep 2014 20:51:36 +0000 (16:51 -0400)
string_array.php

index 2e4a8e3..4f9081d 100644 (file)
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-# 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;
 }