php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 05-10-2009, 19:04
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Unhappy Regulärer Ausdruck Problem

Hallo Phpler,

ich steh mal wieder vor einem Problem.

Ich schaffs einfach nicht nur ne ordentlich $regExp für preg_match() zusammen zu bauen wie ich es will.

Ich versuchs jetzt seit knapp 2 Tagen mich mit diesem leidigen Thema vertraut zu machen, aber irgendwie funktionierts nicht.

bisher siehts so aus:
$regEXP = "/^[a-zA-Z0-9_@.]+$/s";

Aber irgendwie funktioniert es nur ab und zu.... und das ist blöd


Vielleicht könnte mir jemand von euch helfen und mir die richtige für meine Bedürfnisse basteln.

Wie oben vll zu erkennen sollen nur Zeichen von "a-z", "A-Z", "0-9" und die Sonderzeichen "_", "@", und "." zulässig sein.
Es soll zusätzlich nur ein zusammenhängender String sein dürfen. D.h. sobald ein 2. Wort durch ein leerzeichen getrennt kommt soll es auch unzulässig sein.


Sollt sich jemand damit jemand auskennen und mir helfen können bei meinem Problem wäre ich sehr dankbar.

Gruß
__________________
Der die das, wer wie was, wieso weshalb warum
..... wer nicht fragt bleibt dumm.
  #2 (permalink)  
Alt 05-10-2009, 19:25
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Maanee9 Beitrag anzeigen
Aber irgendwie funktioniert es nur ab und zu.... und das ist blöd
Diese Aussage ist als Problembreschreibung auch - blöd.

Beispieldaten?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
  #3 (permalink)  
Alt 05-10-2009, 19:28
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Maanee9 Beitrag anzeigen
Aber irgendwie funktioniert es nur ab und zu.... und das ist blöd
tja, dannn zeig bitte die Beispiele, wo es sich nach deiner Vorstellung falsch verhält.
modifer 's' passt eigentlich nicht in Logik von deinem Regex, da bei deinem Ausdruck muss du erst mal Zeilenumbruch erlauben, um ihn danach als Zeichen zu berücksichtigen.
__________________
Slava
bituniverse.com
  #4 (permalink)  
Alt 05-10-2009, 19:29
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Du solltest den Punkt escapen und den Modifier s entfernen.
  #5 (permalink)  
Alt 05-10-2009, 19:52
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Du solltest den Punkt escapen
http://www.php.net/manual/en/regexp.reference.dot.php
Zitat:
Dot has no special meaning in a character class
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
  #6 (permalink)  
Alt 05-10-2009, 20:14
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Standard

Ok vielen dank.

Ich probiers morgen mal aus.
Hab heute leider wenig Zeit.

Meld mich dann morgen zurück.
__________________
Der die das, wer wie was, wieso weshalb warum
..... wer nicht fragt bleibt dumm.
  #7 (permalink)  
Alt 05-10-2009, 23:56
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Maanee9 Beitrag anzeigen
... bisher siehts so aus:
$regEXP = "/^[a-zA-Z0-9_@.]+$/s";

...
Wie oben vll zu erkennen sollen nur Zeichen von "a-z", "A-Z", "0-9" und die Sonderzeichen "_", "@", und "." zulässig sein.
Es soll zusätzlich nur ein zusammenhängender String sein dürfen. D.h. sobald ein 2. Wort durch ein leerzeichen getrennt kommt soll es auch unzulässig sein. ...
Dafür sollte doch das hier ausreichen:
PHP-Code:
preg_match('/\A[a-zA-Z0-9@_.]+\z/'$heuhaufen$treffer); 
Da ein Leerzeichen nicht in der Zeichenklasse [a-zA-Z0-9@_.] vorkommt, sollte preg_match() bei Strings mit solchen auch eine 0 zurückgeben.

Kleiner Tipp: Wenn du dir nicht merken kannst, welche Bedeutung ^ und $ haben (die kann sich nämlich ändern), dann verzichte lieber darauf und benutze \A für String-Anfang und \z (kleines z) für String-Ende. Deren Bedeutung bleibt immer gleich.

Ähnliches gilt für Modifikatoren. /s hat den lustigen Namen "DOTALL" und das bedeutet, der Punkt steht für alles. Im Normalfall steht der nämlich für alles außer Zeilenumbrüche. Und wie schon erwähnt, gilt das natürlich nicht innerhalb einer Zeichenklasse. Deshalb kannst du ihn weglassen.
  #8 (permalink)  
Alt 06-10-2009, 20:56
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Thumbs up

Vielen Dank euch allen.

Mein preg_match funktioniert endlich so wie es soll.


Auch wenn ich das regular Expression Zeug immernoch nicht ganz durchblicke.
Begriffe suchen und Textteile ausschneiden funktioniert ja gerade noch so... aber alles was drüber hinausgeht schafft bei mir immer wieder Verwirrung.



Naja egal. Vielen dank nochmals
__________________
Der die das, wer wie was, wieso weshalb warum
..... wer nicht fragt bleibt dumm.
  #9 (permalink)  
Alt 06-10-2009, 21:56
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Maanee9 Beitrag anzeigen
Auch wenn ich das regular Expression Zeug immernoch nicht ganz durchblicke.
Schau dir ggf. mal das hier an.

Gruß
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
  #10 (permalink)  
Alt 26-03-2010, 14:54
syntaxerror
 Registrierter Benutzer
Links : Onlinestatus : syntaxerror ist offline
Registriert seit: Mar 2010
Beiträge: 31
syntaxerror befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Dafür sollte doch das hier ausreichen:
PHP-Code:
preg_match('/\A[a-zA-Z0-9@_.]+\z/'$heuhaufen$treffer); 
Und das nicht?

PHP-Code:
preg_match('/\A[\w@.]+\z/'$heuhaufen$treffer); 


\w = a-z UND A-Z UND '_'
  #11 (permalink)  
Alt 27-03-2010, 00:43
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von syntaxerror Beitrag anzeigen
Und das nicht?
Nö.

Zitat:
PHP-Code:
preg_match('/\A[\w@.]+\z/'$heuhaufen$treffer); 


\w = a-z UND A-Z UND '_'
[0-9] scheint bei deiner Lösung zu fehlen.

Der Thread ist übrigens schon ca. sechs Monate alt. Ich glaube kaum, dass der TO deine Tipps noch mitbekommen wird.
  #12 (permalink)  
Alt 27-03-2010, 01:03
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

\w schließt Ziffern mit ein, auch wenn syntaxerror das vergessen hat, zu erwähnen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
  #13 (permalink)  
Alt 27-03-2010, 11:34
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
\w schließt Ziffern mit ein, auch wenn syntaxerror das vergessen hat, zu erwähnen.
Jau, stimmt!

Und weil ich diese Feinheiten gerne vergesse (inklusive der Tatsache, dass "_" ein "word character" ist), ziehe ich Zeichenklassen, in denen explizit aufgezählt wird, was dazugehört (oder nicht) diesen Backslash-Abkürzungen vor. Syntaxerror dagegen scheint in diesem Fall entgegen seiner anderswo postulierten Vorgehensweise "Zeichen sparen zu wollen". Das erscheint mir etwas inkonsequent.
  #14 (permalink)  
Alt 29-03-2010, 10:02
syntaxerror
 Registrierter Benutzer
Links : Onlinestatus : syntaxerror ist offline
Registriert seit: Mar 2010
Beiträge: 31
syntaxerror befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
\w schließt Ziffern mit ein, auch wenn syntaxerror das vergessen hat, zu erwähnen.
Jep, das war mein Fehler, sry. Hatte mich aber in der Tat vor dem Posten vergewissert gehabt, dass die Ziffern mit von der Partie sind...

Zitat:
Zitat von fireweasel Beitrag anzeigen
scheint in diesem Fall entgegen seiner anderswo postulierten Vorgehensweise 'Zeichen sparen zu wollen'.
Das erscheint mir etwas inkonsequent.
Isses aber nicht. Ich spare da Zeichen, wo es dennoch kompatibel bleibt. Das hast du bei deinem Threadzitat gänzlich außer Acht gelassen! (wie immer wenn man was aus dem Kontext rauszieht)
Bei \w kann ich ja nachweislich davon ausgehen, dass das PHP kann sowie Perl, sowie Javascript und u. U. noch ein paar mehr.

Diese /U Geschichten könnten aber z. B. bei einigen Regex-Implementationen Probleme machen. Jedenfalls ist mir mindestens schon vor einiger Zeit mal eine Impl. untergekommen, die konnte /U gar nicht!

Geändert von syntaxerror (29-03-2010 um 10:14 Uhr)
  #15 (permalink)  
Alt 29-03-2010, 11:46
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

@syntaxerror: Sei doch bitte so gut, und Kram nicht die ganzen alten Threads wieder hervor. Ich finde es toll, dass du dich fachlich ins Forum einbringst, aber wäre es nicht ratsamer, du konzentrierst dich auf akute Probleme? =)
Thema geschlossen

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Regulärer Ausdruck ?? jogisarge PHP Developer Forum 2 14-09-2007 12:53
regulärer Ausdruck Heuni PHP Developer Forum 6 11-09-2007 09:39
Regulärer Ausdruck Metha PHP Developer Forum 3 27-05-2007 15:41
Regulärer Ausdruck hacioglu PHP Developer Forum 5 19-01-2006 11:05
regulärer Ausdruck baschi PHP Developer Forum 1 19-10-2003 16:24

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

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