RegExp gesucht
Jenny81
- php
Hi,
ich versuche gerade aus einem System HTML-Files generieren zu lassen.
Das Grundsystem hat alle Links in folgenden Varanten:
index.php
index.php?kat_id=21
/?kat_id=25
?kat_id=25
Zudem gibt es noch einige andere Variablen wie z.B. die Seitenzahl:
?kat_id=25&page=2
Oder die Druckversion:
?kat_id=25&show=print
Aus diesen Pfadangaben möchte ich den Dateinamen der neuen HTML-Datei zusammenbauen und folglich auch sämtliche Links auf der Seite automatisch ersetzen lassen.
Ziel:
index.html
21.html
25_2.html // mit Seitenzahl
25_print.html // Druckversion
Der komplette HTML-Content liegt in einer Var namens $content vor.
Mein Ansatz (fürs erste):
$content=preg_replace("|?kat_id=(\d+)|","$1.html",$content);
Problem dabei ist:
Wie könnte ich das lösen?
Besten Dank
Jenny81
index.php
index.php?kat_id=21
/?kat_id=25
?kat_id=25
Zudem gibt es noch einige andere Variablen wie z.B. die Seitenzahl:
?kat_id=25&page=2
Oder die Druckversion:
?kat_id=25&show=printAus diesen Pfadangaben möchte ich den Dateinamen der neuen HTML-Datei zusammenbauen und folglich auch sämtliche Links auf der Seite automatisch ersetzen lassen.
Willst du wirklich _Dateien_ unter diesen Namen im System _speichern_ oder willst du URI-Pfade für publizierte Ressource-Adressen zusammenbauen?
Ziel:
index.html
21.html
25_2.html // mit Seitenzahl
25_print.html // DruckversionDer komplette HTML-Content liegt in einer Var namens $content vor.
Mein Ansatz (fürs erste):
$content=preg_replace("|?kat_id=(\d+)|","$1.html",$content);
Das heisst, deine Pfade haben keinerlei Delimiter.
Ich prophezeie dir übelsten Umgang mit dem Inhalt.
Da ich vermute, dass deine Pfade in einem bestimmten Kontext stehen:
Bsp. <a href="?kat_id=25&show=print">
solltest du diesen Kontext in dein Suchpattern einbeziehen.
Problem dabei ist:
- es sind nicht immer alle Parameter (show, page, kat_id) vorhanden.
- manchmal sind die Parameter leer (kat_id=&page=1)
Wie könnte ich das lösen?
Löse es bevor du ersetzen musst. Erzeuge gar nicht erst Pfade, die du eh nicht willst.
Die Lösung heisst eigentlich: Matche auf den Context, und überführe den Inhalt via callback Funktion an eine sub, welche sich der Details annimmt.
Du hast übrigens nicht gesagt, ob das eine einmalige Umbau-Aktion ist, oder ob du die CPU permanent verbraten willst.
mfg Beat
Hi Beat,
dabei geht um um die einmalige Erstellung eines "HTML-Dump" eines Katalogsystems, die lokal auf dem Laptop laufen soll.
Ja, die Links sind logischer Weise in A-Tags (<a href="?kat_id=25&show=print">) eingebettet.
Aber das Grundsystem kann und will ich nicht umstricken (kommt letztendlich nicht von mir). Ich schnappe mir nur den Inhalt via ob_get_contents() und möchte daraus möglichst schnell und einfach eine HTML-Only-Variante erzeugen.
Beste Grüße
Jenny