Mailinglisten-Archive |
oliver.haeuser schrieb
> Aber wie loese ich das. Die Zeilen koennen beliebig lang sein, also
ein
> 456,45-567,345,543-234
> ist ebenfalls moeglich.
> (beim zweiten ereg stehen noch ein paar mehr zahlen drin ...)
>
> Oder waere es sinnvoll zu pruefen ob ein , vorhanden ist - wenn ja das
> ganze mit explode trennen
> und nach - suchen und dann die eregs anwenden ?
Ja, das erscheint sinvoll,
$string = "11, 126-129,745,123, 345-347, 498 -511, 14, 784s-784";
$string = str_replace(" ", "", $string);
$parts = explode(",", $string);
$max = count($parts);
for($c = 0; $c < $max; $c++)
{
if(preg_match("=^[0-9]{1,3}$=", $parts[$c]))
{
$zahlenreihe[] = $parts[$c];
}
elseif(preg_match("=^([0-9]{1,3})-([0-9]{1,3})$=", $parts[$c], $x))
{
for($i = $x[1]; $x[1] <= $x[2]; $x[1]++)
{
$zahlenreihe[] = $x[1];
}
}
else
{
$msg .= "Fehlerhafte Eingabe ($parts[$c]).<br>\n";
}
}
sort($zahlenreihe);
$zahlenreihe = implode(" ", $zahlenreihe);
echo $msg.$zahlenreihe;
Guido Haeger
php::bar PHP Wiki - Listenarchive