Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[RegExp] Matchen eines Beliebigen Strings [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[RegExp] Matchen eines Beliebigen Strings


 
NuSphere
14-11-2005, 16:23 
 
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


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