PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pregmatch php (auf Ganzzahl prüfen)


mapel110
2008-04-14, 14:51:43
int_check($_POST["zahl"]);
if ($valid_int)
redirectTO("login2.php");
else
redirectTO("login.php");

Funktion dazu:
if (!preg_match('=^[0-9]+$=',$validate_int))
{
$valid_int = false;
}
else
{
$valid_int = true;
}
return $valid_int;
------------------------------------------
Ich bilde mir ein, dass das schon mal funktioniert hat, aber irgendwo ist jetzt der Wurm drin. Ich will halt schlicht auf Ganzzahlen prüfen. Geht um Telefonnummern.

Sephiroth
2008-04-14, 15:10:40
entferne die = aus deinem pattern

alternativ kannst du auch is_numeric nehmen, was aber weniger genau wäre, oder is_int mit einem vorigen cast auf int. alternative 3 wäre ctype_digit, bei der geprüft wird, ob alle zeichen des strings ziffern sind.

robobimbo
2008-04-14, 15:12:04
String: 12458
RE: ^[0-9]+$

match = true
match-Anzahl = 1
lastIndex = 0
match-Liste:
(0) 12458

Getestet mit: http://www.topsoft.at/pstrainer/pstrainer.htm

edith sagt: Du warst zu langsam!

mapel110
2008-04-14, 15:24:41
entferne die = aus deinem pattern

Dann meckert er, er habe keine delimiter gefunden und so.

Ctype scheint zu klappen, ist auch komfortabler. Danke. :)

mapel110
2008-04-15, 12:29:25
tja, mal wieder eine kleine Programmänderung. Ich soll alles in einem Feld eingeben können, also wirds kompliziert.

Folgendes soll möglich sein:
123-127;8554;3000-4000;3333;3332;2221

Also man kann entweder einzelne Zahlen durch ; abtrennen oder Bereiche mit - umschreiben. Wie trenne ich dann solch einen String am komfortabelsten?

Ich hab schon mit dem Gedanken gespielt, schlicht den kompletten String in einer For-Schleife zu durchlaufen und eben gewünschtes auszuführen.
Obendrein muss nämlich auch noch berücksichtigt werden, ob die Zahl 4 Stellen oder mehr hat ODER ob sie 3 oder weniger hat.
:ugly:

/edit
Ich lasse 1x explode mit ; drüber laufen
dann über das Ergebnis nochmal explode mit -
hm, dann...

/edti2

$zahlenreihe=explode(";",$_POST[rufnummern]);
$i=0;
$j=0;
foreach ($zahlenreihe as $wert) {
$test = strchr ( $wert, '-' );
if ($test != "") {
$zahlenreihe2[$i]=explode("-",$wert);
$i++;
}
else
{
$zahlenreihe3[$j]=$wert;
$j++;
}
}

Es geht mir Sicherheit schöner und schneller, aber ich bin froh, dass es das tut, was es soll. :ugly:
Zur Erklärung: Bei explode gibts ja ohnehin schon ein Array zurück. Ich verpass da aber noch einen zweiten Index in der foreach-Schleife, weil ich da ja Anfangs- und Endwert zurückgeliefert bekomme, zusätzlich dazu, dass mehrere Anfangs- und Endwerte auftreten könnten.