mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 18.04.2024 13:37 Benutzername: Passwort: Auto-Login

Thema: [PHP] Reg. Exp. und preg_replace für URL vom 25.11.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Reg. Exp. und preg_replace für URL
Autor Nachricht
13pixelchen
Account gelöscht Threadersteller


Ort: -

Verfasst Fr 25.11.2005 19:26
Titel

[PHP] Reg. Exp. und preg_replace für URL

Antworten mit Zitat Zum Seitenanfang

Also,

das ist mir mittlerweile peinlich, dass ich nur noch im Programmierteil des Forums abhänge und euch mit Themen belästige, die besser nicht sein könnten. Gleich gehts hier aufs Kino Open Air, aber vorher diese unheimlich tolle Frage:

Wie muss ein preg_replace aussehen, welcher mir in Anlehung an diese htaccess:

Code:

RewriteRule   ^([^/]+)\.htm$                 /index.php?seite=$1 [L]
RewriteRule   ^(.+-[^/]+)\.htm$              /index.php?star=$1 [L]
RewriteRule   ^(.+-[^/]+)/([^/]+)\.htm$      /index.php?star=$1&seite=$2 [L]


Die a href - URLs in einem String umschreibt? Der String ist genaugenommen das fertig geparste Template aus Smarty, und ich will den Ausgabefilter benutzen. Er soll also umwandeln:

/index.php in /
/index.php?seite=portal in /portal.htm
/index.php?star=vorname-nachname&seite=vita in /vorname-nachname/vita.htm

Kann das hier jemand besonders gut von euch? Ist nämlich neben OOP der zweite große Unbekannte Bereich für mich.
 
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Sa 26.11.2005 12:18
Titel

Antworten mit Zitat Zum Seitenanfang

^\/([a-z]+-[a-z]+)\/([a-z]+)\.htm
Allerdings müssen die [a-z]-Blcöke alle Zeichenklassen enthalten, die Du brauchst.


Zuletzt bearbeitet von tacker am Sa 26.11.2005 12:21, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Doppelplusgut

Dabei seit: 06.10.2005
Ort: Zimmer 101
Alter: 55
Geschlecht: Männlich
Verfasst Sa 26.11.2005 12:22
Titel

Antworten mit Zitat Zum Seitenanfang

Immer wieder hilfreich, die Regenechsen
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Sa 26.11.2005 13:01
Titel

Antworten mit Zitat Zum Seitenanfang

tacker hat geschrieben:
^\/([a-z]+-[a-z]+)\/([a-z]+)\.htm


Äh Tacker ich glaub er wollte genau die andere richtung .. aus
index.php?foo=bar so ne schicke url machen ..

ansonsten dürfte parse_str() das ganze dann recht einfach zu
lösen, wenn man die urls gemachted hat.
  View user's profile Private Nachricht senden
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Sa 26.11.2005 13:36
Titel

Antworten mit Zitat Zum Seitenanfang

dastef hat geschrieben:
Äh Tacker ich glaub er wollte genau die andere richtung .. aus
index.php?foo=bar so ne schicke url machen ..


Hm, seltsame sachen gibts ...
Code:

<?php


    $urls = array(
        '/index.php', // in /
        '/index.php?seite=portal', // in /portal.htm
        '/index.php?star=vorname-nachname&seite=vita', // in /vorname-nachname/vita.htm
    );

    foreach ($urls as $url) {
        echo $url . ' -> ';
        $url = preg_replace('/^\/index\.php\?star=([a-z]+-[a-z]+)&seite=([a-z]+)/', '/$1/$2.htm', $url);
        $url = preg_replace('/^\/index\.php\?seite=([a-z]+)/', '/$1.htm', $url);
        $url = preg_replace('/^\/index\.php/', '/', $url);
        echo $url . "\n";
    }

?>

PHP hat geschrieben:
/index.php -> /
/index.php?seite=portal -> /portal.htm
/index.php?star=vorname-nachname&seite=vita -> /vorname-nachname/vita.htm


Zuletzt bearbeitet von tacker am Sa 26.11.2005 13:37, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
13pixelchen
Account gelöscht Threadersteller


Ort: -

Verfasst Sa 26.11.2005 15:09
Titel

Antworten mit Zitat Zum Seitenanfang

Oh gott, meine Rettung! Jetzt muss ich das nur noch mit folgendem Beispielcode verwurschteln, damit nicht ALLE URLs in einem String, sondern nur die, welche in einem a href Tag sitzen umgewandelt werden:

Code:
preg_replace('/<a\s+(.*)href=[\'\"]([^\'\"]*)\&a?m?p?;?([^\'\"]*)[\'\"]/i','<a $1href="$2+an+$3"', $tpl_output);


außerdem kann vorname-nachname auch mal vorname-zwischenname-nachname sein, also müsste alles zwischen "name=" und "&" oder dem Ende des Strings als Variable übergeben werden. Ich versuch das jetzt mal umzuschreiben:

Code:

    $urls = array(
        '<a href="/index.php">/index.php</a>', // in /
        '<a href="/index.php?seite=portal">/index.php?seite=portal</a>', // in /portal.htm
        '<a href="/index.php?star=vorname-nachname&seite=vita">/index.php?star=vorname-nachname&seite=vita</a>', // in /vorname-nachname/vita.htm
        '<a href="/index.php?star=vorname-zwischen-nachname&seite=vita">/index.php?star=vorname-zwischen-nachname&seite=vita</a>', // in /vorname-nachname/vita.htm
    );

    foreach ($urls as $url) {
        echo $url . ' -> ';
        $url = preg_replace('/<a\s+(.*)href=[\'\"]^\/index\.php\?star=([a-z]+-[a-z]+)&seite=([a-z]+)[\'\"]/i', '<a $1href="/$1/$2.htm"', $url);
        $url = preg_replace('/<a\s+(.*)href=[\'\"]^\/index\.php\?seite=([a-z]+)[\'\"]/i', '<a $1href="/$1.htm"', $url);
        $url = preg_replace('/<a\s+(.*)href=[\'\"]^\/index\.php[\'\"]/i', '<a $1href="/"', $url);
        echo $url . "<br />\n";
    }


tut so noch nicht.


Zuletzt bearbeitet von am Sa 26.11.2005 15:22, insgesamt 3-mal bearbeitet
 
 
Ähnliche Themen Javascript: replace
JS | replace - regex - br
Kleine Frage zu JS replace
Javascript suchen ersetzen / replace
Probleme mit eregi-replace() (Badword-Filter)
[javascript] replace() ersetzt nur einen match
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.