note 47877 deleted from function.substr by aidan
| From: | aidan@php.net | Date: | Tue, 18 Jan 2005 15:40:27 +0000 |
| Subject: | note 47877 deleted from function.substr by aidan | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-83557@lists.php.net to get a copy of this message | ||
Note Submitter:
----
(final)
here's a useful algorithm for parsing page ranges. it simply does not register ranges like
40-48-54 or nonsensical input, but will register ranges like 38-40 and anything comma delimited.
$pages = '34, 35, 36, 38-40, 40-48-54, sddjhhsdhkadsh, 93, 126';
$pageslen = strlen($pages);
$j = 0;
for ($i=0; $i<=$pageslen; $i++)
{if (ereg('[0-9]', $pages{$i}))
{$numbuff = $numbuff.$pages{$i};}
elseif ($pages{$i} == ',')
{if ($numbuff)
{$page[] = $numbuff;
$numbuff = '';}
}
elseif ($pages{$i} == '-')
{$range[$j][0] = $numbuff;
$numbuff = '';
$i++;
do {
if (ereg('[0-9]',$pages{$i}))
{$numbuff = $numbuff.$pages{$i};}
$i++;
}
while (ereg('[[0-9]', $pages{$i}));
if (ereg('[^,[:space:]]', $pages{$i+1}))
{do
{$i++;}
while (ereg('[^,[:space:]]', $pages{$i}));
$range[$j] = '';
if (!$range)
{$range = '';}
$numbuff = '';
$i--;
}
else {
$range[$j][1] = $numbuff;
$numbuff = '';
$j++;}
}
}
$page[] = $numbuff;
print_r($page);
print_r($range);