note 47877 added to function.substr
| From: | php-general at lists dot php dot net | Date: | Fri, 03 Dec 2004 17:03:43 +0000 |
| Subject: | note 47877 added to function.substr | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-81326@lists.php.net to get a copy of this message | ||
(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);
----
Manual Page -- http://www.php.net/manual/en/function.substr.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+47877
Delete -- http://master.php.net/manage/user-notes.php?action=delete+47877&report=yes
Reason: bad code -- http://master.php.net/manage/user-notes.php?action=delete+47877&report=yes&reason=bad+code
Reason: spam -- http://master.php.net/manage/user-notes.php?action=delete+47877&report=yes&reason=spam
Reason: useless example -- http://master.php.net/manage/user-notes.php?action=delete+47877&report=yes&reason=useless+example
Reason: contains commercial links -- http://master.php.net/manage/user-notes.php?action=delete+47877&report=yes&reason=contains+commercial+links
Reason: useless note -- http://master.php.net/manage/user-notes.php?action=delete+47877&report=yes&reason=useless+note
Reject -- http://master.php.net/manage/user-notes.php?action=reject+47877&report=yes
Search -- http://master.php.net/manage/user-notes.php