Hi alle zusammen,
Es wäre echt super, wenn ihr mir bei einem kleinen Problem helfen könntet.
Ich habe eine HTML Datei, in der Links mit verschiedenen Pfaden drin stehen.
Diese Pfade möchte ich gern auf eine bestimmte Weise umschreiben, da ich die HTML statisch verwenden möchte.
Aus allen gefundenen Pfaden wie hier...
/?p=my-page-1
/?p=abc-de
/?p=test
...soll dies werden:
page-my-page-1.html
page-abc-de.html
page-test.html
Kann man sowas nicht "irgendwie" über eine crazy regex in einem Rutsch machen?
Ich bin wirklich kein großer Programmierer.
Daher frage ich einfach mal direkt nach einer Lösung.
Hoffe das ist okay für euch...
Gruß Mario
Ankündigung
Einklappen
Keine Ankündigung bisher.
string replace
Einklappen
Neue Werbung 2019
Einklappen
X
-
regex
Ohh.. das tut mir leid.
Jetzt tut er was.... supi.....
Wenn wir jetzt noch das /? (slash und fragezeichen am anfang der url) wegbekommen könnten, dann wäre es perfekt.
Irgendwie müssen diese beiden zeichen wohl ge'escaped werden oder?
EDIT::::: Ich glaube ich habs...... richtig so?
$cnt = preg_replace('#\/\?p=(.*?)"#i', 'page-$1.html"', $cnt);
Gruß Mario
-
Nö, das ^ ist zuviel. Hättest du die Info früher gegeben dass die Links im HTML eingebettet sind...
PHP-Code:preg_replace('#p=(.*?)"#i', 'page-$1.html"', $cnt);
Einen Kommentar schreiben:
-
regex
Hi tkausl,
Vielen vielen Dank für die schnelle Antwort und deinen Lösungsvorschlag.
Entweder mache ich noch was falsch oder es funktioniert noch nicht wirklich.
Zumindest passiert bei mir hier irgendwie garnichts, wenn ich das auf meinen eingelesenen Dateiinhalt ausführe.
Die href der links sehen so aus:
PHP-Code:<a href="/?p=dashboard">....</a>
<a href="/?p=ui-panel">....</a>
<a href="/?p=ui-forms">....</a>
Kann es sein, dass hier auch noch das /? im regex irgendwie fehlt?
PHP-Code:$cnt = file_get_contents("gen/".$file);
$cnt = preg_replace('#p=(.*?)^#i', 'page-$1.html', $cnt);
file_put_contents("gen/".$file, $cnt);
Einen Kommentar schreiben:
-
p=(.*?)^ -> page-$1.html
PHP-Code:preg_replace('#p=(.*?)^#i', 'page-$1.html', $src);
Einen Kommentar schreiben:
Einen Kommentar schreiben: