php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.08.2010, 10:08  
Erfahrener Benutzer
 
Benutzerbild von Sonic
 
Registriert seit: 31.05.2010
Beiträge: 151
PHP-Kenntnisse:
Fortgeschritten
Sonic ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] RegEx mit Variabler länge

Hi,
ich will, dass die Länge varible ist:
Zeile 23:
PHP-Code:
preg_match("/^[a-z]{$this->minimaleVornamenLaenge, $this->maximaleNachnamenLaenge}$/i"$_POST['vorname']) 
Die Meldung ist:

Code:
Parse error: syntax error, unexpected ',', expecting '}' in C:\xampp\htdocs\scripte\kontaktformular.php on line 23
Wenn ich anstatt den Variablen Zahlen einsetzte geht es:
PHP-Code:
preg_match("/^[a-z]{3, 20}$/i"$_POST['vorname']) 
Hintergrund:

Man soll einstellen können wie Lang bzw. Kurz der Name sein muss und es dürfen nur Buchstaben von a-z vorhanden sein.

Natürlich sind andere Lösungswege auch erwünscht .

LG Sonic

Geändert von Sonic (30.08.2010 um 10:12 Uhr).
Sonic ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.08.2010, 10:29  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Du musst es in ZWEI Schritten machen... erst das Pattern zusammenstellen, dann matchen.. viele Sachen haben in einem regulären Ausdruck spezielle Bedeutung (z.B.Dollarzeichen, Klammern, Plus und Minus, etc.)
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 30.08.2010, 10:41  
Erfahrener Benutzer
 
Benutzerbild von Sonic
 
Registriert seit: 31.05.2010
Beiträge: 151
PHP-Kenntnisse:
Fortgeschritten
Sonic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,
danke für die Antwort.
Meinst du so:
PHP-Code:
$pattern "/^[a-z]{$this->minimaleVornamenLaenge, $this->maximaleVornamenLaenge}$/i";
            if (
preg_match($pattern$_POST['vorname'])) {//Mit RegExp wird geprüft, ob die Syntak stimmt 
Es kommt aber immer noch die gleiche Meldung..

LG Sonic

Geändert von Sonic (30.08.2010 um 11:05 Uhr).
Sonic ist offline  
Alt 30.08.2010, 11:09  
Erfahrener Benutzer
 
Benutzerbild von Sonic
 
Registriert seit: 31.05.2010
Beiträge: 151
PHP-Kenntnisse:
Fortgeschritten
Sonic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok,
habs so gehts:
PHP-Code:
preg_match('/^[a-z]{'.$this->minimaleVornamenLaenge.', '.$this->maximaleVornamenLaenge.'}$/i'$_POST['vorname']) 

Geändert von Sonic (30.08.2010 um 16:20 Uhr).
Sonic ist offline  
Alt 30.08.2010, 15:20  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

So, jetzt zeig uns mal die Stelle, wo zwei Variablen gleichzeitig benutzt werden: PHP: Strings - Manual
Du hjast nicht mal die Fehlermeldung verstanden, denn es ist ein Parse error, kein Fehler im Ausdruck.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 30.08.2010, 15:44  
Erfahrener Benutzer
 
Benutzerbild von Sonic
 
Registriert seit: 31.05.2010
Beiträge: 151
PHP-Kenntnisse:
Fortgeschritten
Sonic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

also so geht es bei mir ohne Fehlermeldung:

PHP-Code:
if (preg_match('/^[a-z]{'.$this->minimaleVornamenLaenge.', '.$this->maximaleVornamenLaenge.'}$/i'$_POST['vorname'])) {//Mit RegExp wird geprüft, ob die Syntak stimmt
                
$vornamenZeichenCheck true;
            }else{
                
$vornamenZeichenCheck false;
            } 
Aber vll. hast du ja das Problem, oder ich deine Aussage nicht verstanden:

Als ich anstatt der Variablen Zahlen hatte ging es noch. Aber ich habs jetzt ja gelöst. Das der Ausdruck richtig war hab ich ja gewusst, nur wie ich die Länge($this->minimaleVornamenLaenge) beeinflussen konnte eben nicht. Und bei ersten Versuch gabs nen Error.


LG Sonic

Geändert von Sonic (30.08.2010 um 16:20 Uhr).
Sonic ist offline  
Alt 30.08.2010, 17:12  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Sonic Beitrag anzeigen
Hi,

also so geht es bei mir ohne Fehlermeldung:

PHP-Code:
if (preg_match('/^[a-z]{'.$this->minimaleVornamenLaenge.', '.$this->maximaleVornamenLaenge.'}$/i'$_POST['vorname'])) {//Mit RegExp wird geprüft, ob die Syntak stimmt
                
$vornamenZeichenCheck true;
            }else{
                
$vornamenZeichenCheck false;
            } 
...
Wieso baust du die Ermittlung der String-Länge in den Regulären Ausdruck ein? Mit strlen() geht das unkomplizierter. Abgesehen davon muss der PCRE bei jedem preg_match()-Aufruf neu erzeugt werden. Damit hebelst du das interne Caching aus, dein Script wird langsamer und verbrät mehr Speicher. Falls $this->minimaleVornamenLaenge und sein Kumpel wirklich bei jedem Durchlauf einen anderen Wert haben sollten.

PHP-Code:
if (
    (
$len strlen($_POST['vorname'])) >= $this->minimaleVornamenLaenge 
    
&& 
    
$len <= $this->maximaleVornamenLaenge
    
&&
    
preg_match('/\A[a-zA-Z]\z/')
) {
   
// hurray
}
else {
   
// Verd****e Sch...


Geändert von fireweasel (30.08.2010 um 17:17 Uhr).
fireweasel ist offline  
Alt 30.08.2010, 17:24  
Erfahrener Benutzer
 
Benutzerbild von Sonic
 
Registriert seit: 31.05.2010
Beiträge: 151
PHP-Kenntnisse:
Fortgeschritten
Sonic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,
ist denn deine Lösung von der Performace her besser? Ich ermittle mit meinem Script, ob der Vorname nur aus Buchstaben von a-z besteht und er muss mindestens 3 Zeichen haben und maximal 20 Zeichen haben

LG Sonic

Geändert von Sonic (30.08.2010 um 17:29 Uhr).
Sonic ist offline  
Alt 30.08.2010, 17:26  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von Sonic Beitrag anzeigen
und er muss 3 Zeichen kurz und 20 lang sein.
Ein Paradoxon
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 30.08.2010, 17:29  
Erfahrener Benutzer
 
Benutzerbild von Sonic
 
Registriert seit: 31.05.2010
Beiträge: 151
PHP-Kenntnisse:
Fortgeschritten
Sonic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja ok. Mindestens 3 Zeichen und darf maximal 20 haben. Aber ich denke Ihr hab verstanden was ich gemeint hab

LG Sonic
Sonic ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Kleine Regex Frage Bubelbub PHP-Fortgeschrittene 8 25.07.2010 23:39
[Erledigt] regex | variables wort herausfiltern Knechtle PHP Tipps 2010 6 05.03.2010 17:21
[Erledigt] Regex als Parserfunktion geeignet? skandler PHP Tipps 2010 9 04.02.2010 21:23
regex bibliothek brian johnson Software-Design 9 19.10.2009 16:23
Array sortieren mit regex Lupi PHP Tipps 2008 3 21.07.2008 15:17
Regex: Auslesen der Meta-Tags einer Webseite Sucheingrenzung pepe24 PHP Tipps 2008 12 31.05.2008 15:41
2 Regex in PHP kompatible Syntax übersetzen NoiZy PHP-Fortgeschrittene 6 07.04.2008 09:04
Regex Link Problem Broadcast PHP Tipps 2008 2 29.02.2008 16:30
[gelöst :D ] regex tuts nur einmal pro zeile notyyy PHP Tipps 2008 17 24.09.2007 15:40
Regex für "Ist der erste Buchstabe ein Großbuchstabe?&q R4v3r PHP Tipps 2007 8 06.02.2007 15:43
RegEx für Mail-Adresse (Bitte prüfen!) vollkommenegal PHP Tipps 2006 13 20.11.2006 20:02
habe ein paar fragen zu REGEX imported_kremser PHP Tipps 2006 11 31.01.2006 15:30
RegEx findet Stringvorkommen nicht PHP Tipps 2007 6 08.12.2005 21:52
[Erledigt] Regex Problem. PHP Tipps 2007 14 07.11.2005 15:24
Regex für attribute in quelltexten robo47 PHP Tipps 2005 6 27.01.2005 18:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
regex länge, php regex vorname, php regex maximale länge, regex mindestlänge, reguläre ausdrücke länge, regex gesamtlänge, vorname sonic, regexp länge, vorname regex, php regex maximale zeichen, php regular expression für vorname, regex maximal länge, regexp zahl mit variabler länge, regex variable länge, php regexp maximale länge, maximale länge regexp php, dollarzeichen regex, regex vornamen php, php regexp länge egal, regex zahl länge

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum