[RegExp] Matchen eines Beliebigen Strings

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

  • [RegExp] Matchen eines Beliebigen Strings

    Ich habe vor aus einer inputzeile mehrere sachen eingeben lassen zu können, nach dem dann gesucht werden kann.

    ich definiere dies jetzt mal in der var $text.

    $text = "'a'";
    echo $regexp = "/(\W)(.*(?=\1))/i";

    if(preg_match($regexp, stripcslashes ($text), $treffer))
    {
    echo "<br>Sondercommand: ".$treffer[1];
    echo "<br>Text: ".$treffer[2];
    }
    else
    echo "Normale Suche: ".$text;

    So soll zum beispiel ein mit ° eigeleiteter text in einem bestimmten DB-Feld gesucht werden, jedoch gibt es auch wieder eingaben, mit welcher man seinen text eingrenzen möchte. Wie mit einem normalen hochkommen (direkte suche) (Dieses möchte ich aber nicht in meinem match haben. Wer kann mir meinen Fehler erklären?

    Ich möchte folgendes matchen

    °SHO <- suche nach Mitarbeiterkürzel SHO
    MIS <- Such in allen Feldern per LIKE (Normale Suche)
    * <- Unbearbeite aufträge
    "Training" <- In allen Feldern per = nach Training suchen

    Mein RegExp holt sich das erste zeichen, (falls es ein Sonderzeichen ist. Ist es keins, wird ne normale suche gemacht. Ist es eins soll alles bis zu dem gleichen zeichen (bzw. bis zum schluss gematcht werden. (Jedoch soll - falls vorhanden - das zeichen nicht in den match aufgenommen werden.

    bei dem beispiel

    $text = "'a'";

    funktioniert folgender RegExp:

    $regexp = "/(\W)(.*(?='))/i";

    Sobald ich aber eine Backreferenz einbinde auf die 1. Gruppe matcht er gar nicht mehr.

    $regexp = "/(\W)(.*(?=\1))/i"; # Geht nicht

    Woran liegt das? \W kann ich nicht mehr nehmen, da auch andere zeichen darin auftauchen könnten!

    Danke für eure hilfe
Lädt...
X