php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.02.2012, 11:51  
Benutzer
 
Registriert seit: 31.01.2012
Beiträge: 47
PHP-Kenntnisse:
Anfänger
Hubba16 befindet sich auf einem aufstrebenden Ast
Standard preg_match Problem

Heyho,

eine kurze Frage am Rande:
preg_match() liefert doch "true" zurück, wenn das Pattern im String gefunden wurde oder?! D.h. es liefert mir im folgendem Beispiel "true" zurück?! (Natürlich gibt es nicht true zurück, sondern die Anzahl der Übereinstimmungen )
PHP-Code:
preg_match("#[acd]#""bahji"); 
erlaubt die Zeichen "a","c" und "d". Im String sind aber noch mehr Zeichen enthalten, die "garnicht erlaubt sind". Aber warum bekomm ich "true" zurück? Gibt es eine Syntax beim Regex, die besagt, dass wirklich nur die Zeichen im String enthalten sein dürfen und nicht nur "true" zurück gibt, wenn es eine Übereinstimmung gibt?

Viele Grüße,
Hubba16
Hubba16 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.02.2012, 12:08  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

preg_match gibt nie true zurück, sondern 0 oder 1.

- http://php.net/manual/en/function.preg-match.php

Dein Pattern besagt derzeit: Suche ein Zeichen a, c oder d in der Eingabe. Das wird gefunden.

Wenn du prüfen willst, ob eine Eingabe nur a, c oder d enthält, musst du das Pattern an Stringanfang und Stringende verankern.

Zum Beispiel: /^[acd]+$/

Doku dazu: http://www.php.net/manual/en/referen...ern.syntax.php
__________________
Blog | Buch | Kaloa
mermshaus ist offline   Mit Zitat antworten
Alt 09.02.2012, 12:15  
Benutzer
 
Registriert seit: 31.01.2012
Beiträge: 47
PHP-Kenntnisse:
Anfänger
Hubba16 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mermshaus Beitrag anzeigen
preg_match gibt nie true zurück, sondern 0 oder 1.

- http://php.net/manual/en/function.preg-match.php
Ich weiß. Habe ich ja schon oben erwähnt. Es gibt 1 zurück, weil es nach einer Übereinstimmung beendet wird

Zitat:
Zitat von mermshaus Beitrag anzeigen
Zum Beispiel: /^[acd]+$/
Stand das Circumflex nicht für eine Verneinung? Es verwirrt mich gerade etwas, auch nachdem ich in die Doku gehschaut habe.
Oder bedeutet es, dass der String von vorn bis hinten nur die 3 Zeichen enthalten darf?!
Hubba16 ist offline   Mit Zitat antworten
Alt 09.02.2012, 12:20  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Innerhalb von Zeichenklassen (z. B. [^abc]) steht das Circumflex für eine Verneinung. Außerhalb steht es für den Eingabeanfang.

- http://www.php.net/manual/en/regexp.reference.meta.php

Zitat:
Oder bedeutet es, dass der String von vorn bis hinten nur die 3 Zeichen enthalten darf?!
Das bedeutet das von mir gepostete Pattern, ja.
__________________
Blog | Buch | Kaloa
mermshaus ist offline   Mit Zitat antworten
Alt 09.02.2012, 12:22  
Benutzer
 
Registriert seit: 31.01.2012
Beiträge: 47
PHP-Kenntnisse:
Anfänger
Hubba16 befindet sich auf einem aufstrebenden Ast
Standard

Und /^[a][c][d]+$/ würde bedeuten, dass die 3 Zeichen in der Reihenfolge vorkommen dürfen? Egal wie oft?!
Hubba16 ist offline   Mit Zitat antworten
Alt 09.02.2012, 12:23  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Hubba16 Beitrag anzeigen
Ich weiß. Habe ich ja schon oben erwähnt. Es gibt 1 zurück, weil es nach einer Übereinstimmung beendet wird
Nunja alles auser 0 ist true. Man kann eine 0 als false sehen und werten, aber eine 1 nicht zwingend als true.

Zitat:
Zitat von Hubba16 Beitrag anzeigen
Stand das Circumflex nicht für eine Verneinung? Es verwirrt mich gerade etwas, auch nachdem ich in die Doku gehschaut habe.
Oder bedeutet es, dass der String von vorn bis hinten nur die 3 Zeichen enthalten darf?!
Ja aber dann muss das in der Zeichenklasse mit verankert sein.
PHP-Code:
preg_match("#[^acd]#""bahji"); 
Damit würdest du abc nicht erlauben, bzw. verneinen oder auch negieren.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 09.02.2012, 12:26  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

Zitat:
Und /^[a][c][d]+$/ würde bedeuten, dass die 3 Zeichen in der Reihenfolge vorkommen dürfen? Egal wie oft?!
Nein.
__________________
--
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   Mit Zitat antworten
Alt 09.02.2012, 12:32  
Benutzer
 
Registriert seit: 25.09.2010
Beiträge: 77
PHP-Kenntnisse:
Fortgeschritten
Raisch befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Hubba16 Beitrag anzeigen
Und /^[a][c][d]+$/ würde bedeuten, dass die 3 Zeichen in der Reihenfolge vorkommen dürfen? Egal wie oft?!
Nein.

[a] - a muss als erstes im String stehen - genau ein mal
[c] - c muss las zweites im String stehen - genau ein mal
[d]+ - d muss einmal, kann aber beliebig oft am ende des Strings stehen

acd = gültig
acdddddd = gültig
aaccd = ungültig

Gruß
Raisch ist offline   Mit Zitat antworten
Alt 09.02.2012, 12:32  
Benutzer
 
Registriert seit: 31.01.2012
Beiträge: 47
PHP-Kenntnisse:
Anfänger
Hubba16 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Nein.
/^[a][c][d]+$/ bedeutet ein Zeichen "a", dann "c", dann "d". "^" und "$" geben an, dass nur die 3 Zeichen vorkommen dürfen. Und "+" mindestens einmal oder? (erinnert mich ein wenig an XML-Syntax)

@Raisch: also müsste es lauten: /^([a][c][d])+$/ ?
Hubba16 ist offline   Mit Zitat antworten
Alt 09.02.2012, 12:33  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Wie wäre es wenn du selbst mal etwas probierst, z.B. hier ?
jspit ist offline   Mit Zitat antworten
Antwort


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
Problem mit Ajax - Session Problem halskrause PHP Tipps 2009 10 12.01.2010 02:27
[Erledigt] Problem mit Mehrsprachigkeit Sniper_Kotaro PHP Tipps 2009 2 16.12.2009 11:47
Problem beim Download Management mistermint PHP Tipps 2009 8 24.10.2009 11:34
Umlaut Problem nokieone PHP Tipps 2009 7 16.10.2009 19:30
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 14:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 22:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 14:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php pregmatch liefert bei punkt im string fehler, preg_match zeichen reihenfolge egal

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