PHP5.3.0 - preg_match Problem mit Dollar Zeichen

shinbo

Mitglied
Hallo miteinander

Ich bin gerade dabei alle meine ereg in preg_match zu ändern. Ich hatte damals ereg gerne genommen weil es einfacher war als preg_match obwohl sie sich ähneln.

Ich kapiere einfach nicht wie ich das $ (Dollar-Zeichen) als invalide deklarieren kann.
Wenn ich folgendes mache bricht das $ Zeichen ab der jeweiligen stelle ab und gibt ok zurück:
PHP:
$str =  "Isabel$la";
if (preg_match("/^[\w\d-]$/i", $str)){
		 echo "OK";
		} else {
		echo "Invalid";
		}
Also „ \w“ steht ja für „ _a-zA-Z0-9“ und „/i“ für Groß-und Kleinbuchstaben
Selbst das geht nicht:

PHP:
if ( !preg_match("/^[a-z]+[\w-]*$/i", $ str) )
{
 echo "invalid";
}

Mein altes Konstrukt was auch das $ Zeichen meldet

PHP:
if(!eregi("^([a-z]|[A-Z]|[0-9])*$", $str)) { }

Sowas geht auch nicht:

PHP:
[^\$]

Ich möchte nur alle Buchstaben, minus, unterstrich und zahlen, wobei es nicht mit einer Zahl beginnen darf

Langsam verzweifele ich wegen den Dollar Zeichen.
 
Hi,

ich weiß nicht ob ich dich richtig verstanden habe, aber probier das mal aus:

PHP:
$eingabe = 'Isabella';   
     
if (preg_match("/^[A-Z_-]{1,}[A-Z0-9_-]+$/i", $eingabe)) {    
    echo "Alles in Ordnung: " . $eingabe;    
} else { 
    echo "Fehler! Die Eingabe lautet: " . $eingabe;    
}
 
Es funktioniert. Endlich funktioniert es. Danke!

Ich habe sooft was daran geändert dass ich auch mal eine Variante mit „{1,}“ und „[A-Z]“ hatte aber die haben bei mir nicht funktioniert.

Ich glaub ich Weiß was mein Fehler war.
Am Ende hatte ich immer „*$/i“ anstatt „+$/i“.

Plus bedeutet ja:
eins oder mehrfachvorkommen

und Stern wiederum:
keins oder mehrfachvorkommen


Danke, nochmals.
 
Zurück