Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Probleme mit RegEx

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema [Erledigt] Probleme mit RegEx.

    [Erledigt] Probleme mit RegEx

    Hallo,
    ich muss gerade ein Skript von nem anderen zum Laufen bringen und hab Probleme mit der RegEx.

    Er prüft, mit eregi(); ob ein vom Formular übergebener Wert wohl kein Zeichen drin hat das nicht in folgendem regulärem Ausdruck enthalten ist:
    PHP-Code:
    <?php
    $regex 
    "[a-zA-Z[:space:]ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ-.`Ž']+";
    eregi("^$regex$",$string);
    ?>
    Die ergegi murrt nun schon Mal an dem :space:, hab ich durch ein eingetipptes Leerezeichen ausgetauscht, dann kommt zumindest keine Fehlermeldung mehr, dennoch kommt ein einfacher String wie mein Name "Markus" schon nicht durch. Woran liegt das? Es sind ja nur Subpatterns die er vergleichen soll. Was das Plus am Ende bewirkt hab ich auch nicht durchschaut.

    mfg

    AN DEN WEBMASTER,
    dem ich eine Mail wegen diesem Beitrag geschrieben habe: Die Vorschau hat sämtliche Sonderzeichen zu ¼?Á ausgetauscht, nachdem ich editiert und alle Sonderzeichen erneut eingetippt und sofort abgespeichert habe gehts nun wieder.

  • Gast-Avatar
    Ein Gast antwortete
    Oi nach sowas such ich schon lang.
    Man findet aber mit Google noch weitere nützliche Infos zu regulären Ausdrücken.
    Der oben genannte Link ist wirklich auch nur als Crashkurs zu betrachten.
    Wer sich dafür ernsthaft interessiert sollte sich auch andere Seiten dazu angucken.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Oi nach sowas such ich schon lang.

    Einen Kommentar schreiben:


  • Chr!s
    antwortet
    dennoch - die werden mit immer ein Rätsel bleiben.
    Dann wird es mal Zeit für einen Crashkurs
    http://www.regenechsen.de/regex_de/regex_1_de.html

    Echt gutes Tutorial..

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hm, ja so funktionierts, was witzig ist weil ich beim rumprobieren alle Sonderzeichen maskiert habe. Ich hab schon hunderte solcher Suchschemen gemacht - dennoch - die werden mit immer ein Rätsel bleiben.

    Herzlichen Dank!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Lass mich raten du bekommst auch REG_ERANGE als Fehler ?

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);

    $string 'Markus';
    $regex "[a-zA-Z[:space:]ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ\-\.`Ž']+"
    if (
    eregi("^$regex$",$string)) echo 'jo'

    ?>
    Erkennste hinten den Unterschied ...

    EDIT:

    Bei - und . muss ein \ davor, weil du willst das ja als Zeichen haben.
    Sonst wird das falsch interpretiert

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    @dtdesign, Danke für die Info zum Plus, den Rest den du gesagt hast ignorier ich einfach, weils selbstverständlich ist und es mich nur aufregt das jemand sowas zu mir sagt.

    @CIX88
    In der Doku steht nicht das die verlatet sind. Und eigentlich verlass ich mich nur darauf. Sonst verwend ich auch immer preg_match das da jetzt ereg verwendet wird hat mich verwirrt. Aber vom Fehler her, der im Suchschema liegt, war es völlig irrelevant welche Funktion man nimmt (hätte aber dazusagen sollen das ichs mit beiden probiert habe) es funzt nicht, nach meinem Verständnis sollte es as aber. Daher auch das Fortgeschrittenen Forum. Ich hatte die Berfürchtung es wäre ein tiefergehender Fehler.

    Warum die Suchanfrage oben aber nun nicht geht ist immer noch offen. Denn wenn das Plus nur dafür sorgt, das leerstrings ignoriert werden, erklärt es noch immer nicht warum diese einfache Subpattern nicht geht. So wies da steht ists doch richtig.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    >>Als PHP - Fortgeschrittener (...)
    was sollte das bitte?
    Das bezog sich auf deine Aussage:
    Was das Plus am Ende bewirkt hab ich auch nicht durchschaut.
    Weißt du wieviele Zeichen es gibt? Allein mit denen die unsere Tastatur möglich macht würde ich den obrigen String schon übertreffen. Abgesehen davon, dass es nichts daran ändert warums nicht funktioniert! Dann hab ich das Problem halt andersherum.
    Das weis ich, mache das lange genug
    Allerdings ist mir unklar, was du genau machen willst.
    Willst du nur einen Namen überprüfen ?
    Vieleicht hilft dir das aber weiter:
    http://www.cix88.de/cix_php/tonne/au...hen_testen.php

    >> Und anstelle von eregi() mit preg_match() arbeiten.
    Und warum? Die verwenden die selbe Engine.
    ereg() und eregi() sind veraltet, und je nachdem was du machen willst, ist preg_match() beser geeignet.
    Der Handlungsspielraum der Pattern lässt mehr zu.
    Auszug aus dem Handbuch:

    Anmerkung: Die Funktion preg_match(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg().
    Es gehört schon auch was dazu sich "Fortgeschrittener" zu nennen
    Weis nicht, was du damit meinst.
    Meinste mich damit ?
    Falls ja -> solange ich hier bin, habe ich das noch nicht behauptet.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Es gehört sich als PHP-Fortgeschrittener, sich mal ein wenig mehr mit der Sache zu beschäftigen. Wenn du nichtmal deine eignen Skriptteile verstehst, solltest du dann vielleicht doch lieber die Manual konsultieren. Was glaubst du warum er dir preg_match() anstelle von eregi() empfiehlt. Vielleicht einfach mal so machen, er hat seine Gründe dafür, die dir Google en Masse bereitwillig gibt.

    Das PHP-Fortgeschrittenen Forum ist eigentlich für Fragen die in den fortgeschrittenen Bereich gehören, das steht nicht dafür, dass dir Fortgeschrittene antworten.

    Wenn du schon in deinem eigenen Beitrag sagst, das du die Manual nicht angeschaut hast, kann man dir nicht helfen.

    Edit: Um deine Frage zum "+" zu klären. Der Quantifier "+" bedeutet, das nur Zeichenketten, die mind. 1 der Zeichen enthält zutreffen. Leere Strings werden ignoriert.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    >>Als PHP - Fortgeschrittener (...)
    was sollte das bitte?

    >> Vermutlich kommste besser, und die Zeichen zu definieren, die nicht vorkommen dürfen.
    Weißt du wieviele Zeichen es gibt? Allein mit denen die unsere Tastatur möglich macht würde ich den obrigen String schon übertreffen. Abgesehen davon, dass es nichts daran ändert warums nicht funktioniert! Dann hab ich das Problem halt andersherum.

    >> Und anstelle von eregi() mit preg_match() arbeiten.
    Und warum? Die verwenden die selbe Engine.

    Auf die Frage bist du nicht einmal eingegangen. Es gehört schon auch was dazu sich "Fortgeschrittener" zu nennen, zum Beispiel das man nicht auf einem Nebenzitat rumhackt sondern den Kern der Frage auch erkennt.

    merkwürdig, sehr merkwürdig.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Woran liegt das? Es sind ja nur Subpatterns die er vergleichen soll. Was das Plus am Ende bewirkt hab ich auch nicht durchschaut.
    Als PHP - Fortgeschrittener gehe ich davon aus, dass du noch bissel darüber lesen wirst.

    Vermutlich kommste besser, und die Zeichen zu definieren, die nicht vorkommen dürfen.
    Und anstelle von eregi() mit preg_match() arbeiten.

    Einen Kommentar schreiben:

Lädt...
X