preg_match problem

SaTaN

Erfahrenes Mitglied
Hallo Leute,

Wie bekomme ich das nur hin
und was mache ich bei meinem Ausdruck falsch ?

PHP:
if (!(preg_match("/[a-z0-9]{3,16}/i", $_POST['xyz']))) {

Das sind die Kriterien was das machen soll :

3 bis 16 Zeichen lang sein (Buchstaben, Zahlen oder Leerzeichen)
mit einem Buchstaben anfangen

Bitte um Hilfe.

Vielen Dank

euer SaTaN
 
PHP:
if (!(preg_match("/[a-z0-9]{3,16}/i", $_POST['xyz']))) {

probiers mal so :)
PHP:
<?
// if the given string false than he returns a error code
// "error:1"
// the given string are to short or to long
// "error:2"
// the given string begins with a not allowed char

function checkString($inputString, $minLength,$maxLength){
	if(strlen($inputString) > $minLength && strlen($inputString) <= $maxLength){
		if (preg_match("/^[a-z]/i", $inputString))
		else
			$inputString "error:2";
	}
	else {
		$inputString "error:1";
	}
	return $inputString;
}
?>
 
Zuletzt bearbeitet:
dieser pattern dürfte funktionieren:
PHP:
<?
$pattern = "/^[a-z]{1}[a-z\d ]{2,15}$/i";

$test = "blablub bla 124";

if(preg_match($pattern,$test,$array)) echo "bestanden";
else echo "fehlerhaft";

print_r($array); // nur zur testausgabe
?>

SonicBe@m's funktion is zwar auch nicht schlecht aber, da trotzdem mit preg_match noch gearbeitet wird, kann man auch gleich ganz den ausdruck als pattern nehmen
 
hallo Ihr beiden,

Erstmal vielen Dank an euch beiden.
Es funktioniert, nur ich habe mich für die Lösung
von methodus entschieden.

Ich habe das auch gleich für Zahlen erweitert.

PHP:
if (!(preg_match("/^[a-z0-9]{1}[a-z0-9d ]{2,15}$/i", $_POST['xyz']))) {

Nur eins schnall ich bei dem ausruck von methodus nicht.

Wieso nicht so ?
PHP:
if (!(preg_match("/[a-z0-9 ]{3,16}$/i", $_POST['xyz']))) {

[a-z0-9 ]
Hier muss der erste ein Buchstabe sein und dann können Zahlen, oder
Leerzeichen kommen.

{3,16}
Dies sollte doch min. 3, oder max. 16 ziffern sein.

Was ist also der Unterschied ?
Hmm , oder wie ?

Eine Aufklärung wäre super.

Vielen Dank

euer SaTaN
 
Original geschrieben von SaTaN

3 bis 16 Zeichen lang sein (Buchstaben, Zahlen oder Leerzeichen)
mit einem Buchstaben anfangen

^[a-z]{1} <--- zeichenkette muss mit einem buchstaben anfangen, sonst ungültig
[a-z\d ] <-- alle buchstaben und zahlen (\d steht für zahlen) und nen leerzeichen fürs... öhm... leerzeichen :D und

{2,15}$ <--- da schon 1 buchstabe weg is (durch [a-z]{1}) brauchen wir nur noch 2 - 15 buchstaben :)

das dach ^ steht für anfang der zeichenkette und das dollarzeichen $ steht für das ende der kette, notwendig dafür, dass er nicht mitten im string anfängt zu suchen, dann klappts nämlich nich.

PS: 0-9 geht auch aber \d is schöner ;)
 
Hallo methodus,

Puh *schwitz*

Ich habe es verstanden und auch gleich abgespeichert.

Vielen Dank für deine ausführliche Erklärung.

euer SaTaN
 
Zurück