X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=blobdiff_plain;f=string_array.php;h=4f9081d0a52f9ed323d270a7a80bb8f33b1d586e;hp=99168a1b5fe7965315fd913f2b2a5d4d2a3cb52c;hb=15459c86d0996ab3037b1738a8be6efd378c1258;hpb=9f8ed1dba7b2bb0319ab69f843f20e0d45ff736c diff --git a/string_array.php b/string_array.php index 99168a1..4f9081d 100644 --- a/string_array.php +++ b/string_array.php @@ -2,44 +2,47 @@ # Copyright (C) 2007 Jason Woofenden # -# This file is part of wfpl. -# -# wfpl is free software; you can redistribute it and/or modify it under the -# terms of the GNU Lesser General Public License as published by the Free -# Software Foundation; either version 2.1 of the License, or (at your option) -# any later version. -# -# wfpl is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for -# more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with wfpl; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -# This file contains code to convert an array into a string, and back again. - -require_once('code/wfpl/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; }