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
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