Home
Navigation
Impressum
SEO Welten - Webcoding, Editoren, Scripte und Anwendungen
SEO Welten
Buchempfehlungen
 

RegEx: Reguläre Ausdrücke prüfen und RewriteRules testen

Reguläre Ausdrücke mit PHP prüfen

Übersicht / Seite:

  1. Reguläre Ausdrücke (kleine Einführung mit Beispielen zur Syntax)
  2. Formulareingaben überprüfen (Eingaben auf Vollständigkeit überprüfen)
  3. Reguläre Ausdrücke mit PHP prüfen (...und RewriteRules testen)
  4. Mit Regex in Dateien suchen (kleines Script mit Suchfunktion)
  5. Im Quelltext/Quellcode suchen (Script zur Suche in Dateien)

Arbeiten mit mod_rewrite und der .htaccess

Fehler stecken oftmals im Detail und bei regulären Ausdrücken reichen bekanntlich oftmals bereits kleinste Fehler, um zu unerwarteten Ergebnissen zu führen oder um bei der Fehlersuche zu verzweifeln. PHP-Scripts lassen sich dabei noch in einer IDE testen. Wer zum Beispiel die Distribution von Xampp im Zusammenspiel mit einem PHP-Editor und einem Browser zur Vorschau als IDE nutzt, kann dabei seine Scripts und regulären Ausdrücke wie in einem Sandkasten testen. Doch wie sieht es mit RewriteRule-Regeln für die .htaccess aus?

Wer nur kleinere Anpassungen vornehmen möchte, wird sicherlich die Bedingungen und Regeln für die .htaccess in einem einfachen Texteditor ändern und die geänderte htaccess-Datei hochladen, um die Funktionsweise auf dem Server zu testen. Schleicht sich dabei ein Fehler ein, müssen erneut Änderungen und Anpassungen vorgenommen werden und ebenso muss ein erneutes Hochladen erfolgen. Auch hier bietet es sich an, htaccess-Dateien erst einmal mit Hilfe von Xampp im Sandkasten zu testen. Zumindest kann so das stetige Hochladen nach jeder kleinen Änderung umgangen werden.

Bei diesen Tests braucht lediglich die eigentliche Domain, wie zum Beispiel www.seo-welten.de, gegen localhost als Domain ausgetauscht zu werden. Wer noch einen Schritt weitergehen möchte, kann sich auch virtuelle Hosts anlegen. Dennoch ist diese Vorgehensweise noch nicht perfekt, vor allem dann nicht, wenn sich verzwickte Fehler eingeschlichen, die sich einfach nicht zu erkennen geben wollen. Hinzu kommt noch, dass nach jedem einzelnen Test der Browser-Cache gelöscht werden muss, um keinen Irrtümern zu erliegen. Ein kleines PHP-Script zur Überprüfung von regulären Ausdrücken kann jedoch die Arbeit und Fehlersuche etwas erleichtern.

Ein Beispiel für URL-Rewriting

Im Beispiel soll eine URL wie folgt umgeschrieben werden:

Beim Aufruf von

http://localhost/demoshop/literatur-2.html

soll vom Apache die Seite

http://localhost/demoshop/demo.php?literatur=2

ausgeliefert werden.

Die Regel für die RewriteRule in der htaccess-Datei könnte für dieses URL- Rewriting zum Beispiel so aussehen:

RewriteEngine on

RewriteRule ^demoshop/([a-z]+)-([0-9]+)\.html$ /demoshop/demo.php?$1=$2 [L]
    

Sollte sich in der verwendeten Regel für die RewriteRule ein Fehler eingeschlichen haben, so könnte die Fehlersuche mit dem nachfolgenden Listing, welches die Korrektheit des regulären Ausdrucks mit Hilfe der PHP-Funktion preg_replace() überprüft, ein wenig erleichtert werden, insofern den Besonderheiten von PHP Rechnung getragen wird. Zu diesen Besonderheiten gehört unter anderem, dass ein Suchmuster von zwei alphanumerischen Zeichen (Delimiter) begrenzt wird, um von PHP als Muster akzeptiert zu werden.
Häufig werden als Delimiter / Schrägstriche oder # Rauten verwendet. Die Verwendung der Tilde als Begrenzer hat im nachfolgenden Listing jedoch den Vorteil, dass keine Verwechslungsgefahr mit eventuell innerhalb des Musters vorkommenden Schrägstrichen besteht. Anderenfalls müssten Schrägstriche im Muster mit einem rückwärtsgerichteten Schrägstrich (Backslash) maskiert werden. Ebenso verhält es sich in anderen regulären Ausdrücken, in denen nach Anker-Links gesucht wird, insofern diese mit einer Raute beginnen.

<?php

$aufgerufene  = "http://localhost/demoshop/literatur-2.html";
$suchmuster   = "~demoshop/([a-z]+)-([0-9]+)\.html~";
$ausgeliefert = "demoshop/demo.php?$1=$2";

$ausgeliefert = preg_replace($suchmuster, $ausgeliefert, $aufgerufene);

echo $aufgerufene."<br>".$ausgeliefert."\n";


/*----------------------------------------------
 Ausgabe:

 http://localhost/demoshop/literatur-2.html
 http://localhost/demoshop/demo.php?literatur=2
 -----------------------------------------------
*/

?>

Abschließend noch eine kleine Anmerkung. Auch wenn es sich bei dem Beispiel auf dieser Seite um eine typische Regel handelte, wie sie nur in htaccess-Dateien zur Anwendung kommt und das auch nur insofern mod_rewrite aktiviert ist, so sind die Anwendungsmöglichkeiten des Listings nicht ausschließlich auf Regeln für htaccess-Dateien beschränkt. Vielmehr können mit Hilfe des kleinen Listing reguläre Ausdrücke aus unterschiedlichen Bereichen der Programmierung überprüft und getestet werden.

Einführung | Formulareingaben | Suchfunktion « Reguläre Ausdrücke

 
Navigation

Finden und
gefunden werden ...


- Optimierung -

 

Webcoding

Übersicht


Web Services


Tutorials &
diverse Listings

und vieles mehr...


XML


Copyright © 2006 - Verlag Horst Müller - Stendal | Datenschutz | Nutzungsbedingungen