php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.05.2010, 14:18  
Erfahrener Benutzer
 
Registriert seit: 05.09.2007
Beiträge: 183
aha_01 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Regular expressions

Hi,

iich möchte prüfen ob nur die Tage eines Monats eingegeben wurden (von 1 bis 31)
wie kann ich es mit preg_match() machen?

So sieht mein Code aus aber es funktioniert nicht.
PHP-Code:
if (preg_match '/^([1-31])$/i'$execTime )) {


Grüße
Aha
aha_01 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.05.2010, 14:33  
Erfahrener Benutzer
 
Registriert seit: 04.07.2003
Beiträge: 359
PHP-Kenntnisse:
Fortgeschritten
Sirke befindet sich auf einem aufstrebenden Ast
Standard

Dein Code kann so nicht funktionieren, weil reguläre Ausdrücke nur auf Zeichen und deren Vorkommen prüfen und du gleich eine "Zeichenfolge" angegeben hast. Besser Audrücken kann ich mich gerade nicht...

In deinem Code möchtest du prüfen, ob ein Zeichen 1 bis 31 eingegeben wurde,...
PHP-Code:
if( preg_match '/^([1-31])$/i'$execTime ) ) { ... } 
...aber du musst jedes Zeichen einzeln prüfen:
PHP-Code:
if( preg_match '/^([0-9][0-9])$/i'$execTime ) ) { ... } 
Mit dem Code werden alle Zeichenfolgen von 00 bis 99 akzeptiert und du kannst/musst dieses Muster für dein Beispiel anpassen!
Außerdem wirst du das Fragezeichen (?) nutzen müssen, welches ein Zeichen/eine Zeichenfolge optional macht:
PHP-Code:
if( preg_match '/^([0-9]?[0-9])$/i'$execTime ) ) { ... } 
Mit dem Code werden alle Zeichenfolgen von 0 bis 99 akzeptiert, weil das erste zeichen nicht oder einmal vorkommen kann/muss.

Viel Spaß beim basteln, weil reguläre Ausrücke selbst bauen bringt mehr als zukopieren, weil man das Verständnis dafür bekommen sollte... =)
Sirke ist offline  
Alt 06.05.2010, 16:14  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.991
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

Richtig. Im Zusammenhang mit Daten (Datum) ist es aber sowieso besser, mit einer Datumsfunktion zu prüfen.
__________________
--
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 gerade online  
Alt 06.05.2010, 16:59  
Erfahrener Benutzer
 
Benutzerbild von PhillKill12
 
Registriert seit: 26.10.2008
Beiträge: 387
PHP-Kenntnisse:
Fortgeschritten
PhillKill12 befindet sich auf einem aufstrebenden Ast
PhillKill12 eine Nachricht über MSN schicken
Standard

sonst könnte man ja mit
PHP-Code:
if (is_int($day) && $int && $int 32) { ... } 
das ganze überprüfen ..?
__________________
PHP-Code:
if ( $humans >= ) {
   
war ();

PhillKill12 ist offline  
Alt 07.05.2010, 00:04  
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 aha_01 Beitrag anzeigen
Hi,

iich möchte prüfen ob nur die Tage eines Monats eingegeben wurden (von 1 bis 31)
Fünf Monate im Jahr haben weniger als 31 Tage. Beim Februar schwankt die Zahl sogar abhängig vom Jahr zwischen 28 und 29 ...

Zitat:
wie kann ich es mit preg_match() machen?
Kommt darauf an, in welchem Format dein Datum vorliegt. Es sollte schon eine Zeichenkette (ein String) sein.

Zitat:
So sieht mein Code aus aber es funktioniert nicht.
PHP-Code:
if (preg_match '/^([1-31])$/i'$execTime )) {


Grüße
Aha
Welchen Wert hat $execTime?
Du solltest dich erstmal mit den Grundlagen der Regulären Ausdrücke vertraut machen, speziell dem Pattern-Matching und den Zeichenklassen. Und "/i" hat bei Ziffern so gar keinen Sinn ...

Das Folgende käme deiner ursprünglichen Aufgabenstellung wohl am Nächsten:
PHP-Code:
$monat date('m');
if (
preg_match('/\A([012]?[0-9]|3[01])\z/'$monat))) {


... wenn es nicht den Februar, den April, den Juni, den September und den November gäbe ...

Geändert von fireweasel (07.05.2010 um 12:25 Uhr).
fireweasel ist offline  
Alt 07.05.2010, 01:44  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Machs einfach ohne RegExp und mit den String- und Datumsfunktionen von PHP.
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online  
Alt 07.05.2010, 10:08  
Erfahrener Benutzer
 
Registriert seit: 05.09.2007
Beiträge: 183
aha_01 befindet sich auf einem aufstrebenden Ast
Standard

Danke,

das Prpblemchen habe ich wie folgt gelöst:
PHP-Code:
if ((preg_match '/^M[0-9]{1,2}$/'$execTime )) && (intval substr $execTime) >= )) && (intval substr $execTime) <= 31 ))){
...

Schöne Grüße
Aha
aha_01 ist offline  
Alt 07.05.2010, 13:39  
Neuer Benutzer
 
Benutzerbild von sumiyou
 
Registriert seit: 06.05.2010
Beiträge: 26
PHP-Kenntnisse:
Anfänger
sumiyou befindet sich auf einem aufstrebenden Ast
Standard

??? Warum RE? Das nimmt man für "Muster". Du willst doch einfach nur nach (int) zwangscasten und auf >0 und <32 (oder je nach Monat) prüfen.
sumiyou 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] Regular Expressions - Suchen und dynamisch Ersetzen AllOnline PHP Tipps 2010 25 02.02.2010 23:35
Regular Expressions - Umsetzungsproblem web4free PHP Tipps 2010 29 02.02.2010 16:20
[Erledigt] regular expression: einen abschnitt filtern smmrvle PHP Tipps 2009 16 18.11.2009 09:30
[Erledigt] substr() Problem bei Benutzung in regular expression redder PHP Tipps 2009 5 17.11.2009 16:29
[Erledigt] Eingabe mittels Regular Expressions überprüfen ***tisc*** Beitragsarchiv 3 29.08.2009 11:34
[Erledigt] Regular Expression Telefonnummer cetalian PHP Tipps 2009 10 08.07.2009 18:50
[Erledigt] Regular Expression: Attribute mit &quot; &quot; oder ' ' matchen SeppDepp PHP Tipps 2009 8 20.06.2009 23:00
Regular Ekspräschns phpdummi Off-Topic Diskussionen 12 01.09.2008 13:06
Frage zu Regular Expression Schiedsrichter PHP Tipps 2008 1 19.09.2007 16:41
regular expression? Dilandau PHP Tipps 2006 55 30.06.2006 16:10
regular Expression verstehen GothicFiction PHP Tipps 2006 14 23.05.2006 23:15
Suchen und ersetzen mit Regular Expressions? Datenbanken 0 09.09.2005 15:21
Regular Expression - Alles zwischen Anführungzeichen PHP Tipps 2005-2 3 05.08.2005 14:07
mit regular expressions einen Link umformen?? Wie?? 18inch PHP-Fortgeschrittene 8 19.01.2005 23:45
Regular Expressions PHP Tipps 2004 2 31.07.2004 13:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
regular expression php, reguläre ausdrücke zwischen 1-31, reguläre ausdrücke monat 31 tage, php datum preg_match 31, datum februar 29 regex, regular expressions php

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:39 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