Willkommen auf dem Portal für Mediengestalter
|
|
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 |
|
|
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:
|
Verfasst Sa 26.11.2005 12:18
Titel
|
|
|
^\/([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
|
|
|
|
|
Anzeige
|
|
|
Doppelplusgut
Dabei seit: 06.10.2005
Ort: Zimmer 101
Alter: 55
Geschlecht:
|
Verfasst Sa 26.11.2005 12:22
Titel
|
|
|
Immer wieder hilfreich, die Regenechsen
|
|
|
|
|
dastef
Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Sa 26.11.2005 13:01
Titel
|
|
|
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.
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
Verfasst Sa 26.11.2005 13:36
Titel
|
|
|
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
|
|
|
|
|
13pixelchen
Account gelöscht Threadersteller
Ort: -
|
Verfasst Sa 26.11.2005 15:09
Titel
|
|
|
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
|
|
|
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.
|
|