preg_replace Links umformatieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg_replace Links umformatieren

    Hallo Leute,

    Ich benutze ModRewrite um die Links meines Scriptes Suchmaschinenfreundlich zu gestalten.
    Jedoch muss man dann im den PHP/HTML-Dateien die Links schon im entsprechenden Format für ModRewrite ausgeben. In meiner Applikation kann man ModRewrite über ein Adminpanel aktivieren/deaktivieren.
    Ich muss also in meinen PHP Dateien je nach aktiviertem oder deaktivierten Zustand von ModRewrite die Links entweder normal oder für die ReWriteRule formatiert ausgeben.

    Ich benutze die Smarty Template Engine, die mir die Möglichkeit gibt ein Template samt Content vor der Browserausgabe mit einer Filter-Funktion zu bearbeiten.

    Diese Funktion soll mir mit preg_replace alle enthaltenen Links für ModReWrite automatisch im Quellcode umformatieren, wenn ModReWrite im AdminPanel aktiviert ist.
    Dann kann ich die Links in den Templates immer im normalen Format eintragen und habe mir viel Arbeit gespart.
    Die Umkonvertierung zum ModReWrite Format würde also automatisch geschehen und ich müsste die Links nicht im Template für beide Varianten manuell setzen und Abfragen, welche dann ausgegeben werden sollen.

    Ich habe also eine Funktion, die eine Variable '$tpl_output' (enthält den Quellcode) bearbeiten soll und die Links für MopdReWrite umformatieren soll:

    PHP-Code:
    function modrewrite_convert_urls($tpl_output, &$obj_tmpl){ 
        
    $before = array( 
          
    "'([a-zA-Z0-9_]*).php\?([a-zA-Z0-9_]*)=([a-zA-Z0-9_]*)'"
       ); 
       
    $after = array( 
          
    "welcome\\1/\\3/index.do"
       ); 

    $tpl_output preg_replace($before,$after,$tpl_output); 
    return 
    $tpl_output


    So wird aus:
    PHP-Code:
    <a href="http://www.meineseite/base/site.php?var=12">Index</a
    Dieser Part:
    PHP-Code:
    <a href="http://www.meineseite/base/welcome/site/12/index.do">Index</a
    Jetzt habe ich aber noch folgendes Problem:
    Das ganze funktioniert, wenn nur eine Variable im Link übergeben wird.
    Habe ich einen Link wie diesen:
    PHP-Code:
    <a href="http://www.meineseite/base/site.php?var=12&var2=13">Index</a
    Dann wird daraus folgendes:
    PHP-Code:
    <a href="http://www.meineseite/base/welcome/site/12/index.do&var2=13">Index</a
    Wie kann ich jetzt die Abfrage so umfunktionieren, dass wenn im Link zwei Parameter übergeben werden, also ein & an letzter Stelle enthalten ist, dieser ganze Part nicht umgewandelt wird? Dafür würde ich dann eine weitere regex anlegen.
    Oder ist es möglich, das so aufzubauen, dass die Anzahl Parameter variabel sein kann? Dann müsste ich nicht mehrere Pattern erstellen?

    Ich bin leider nicht so fit in den regulären Ausdrücken

    Gruß
    Oneside
    Luxus Magazin
    Luxus Shops

  • #2
    Re: preg_replace Links umformatieren

    füg noch ein

    Code:
    (([a-zA-Z0-9_]*)=([a-zA-Z0-9_]*))*
    hinten an dein RegEx und benutze den U modifikator. Wenn du das neuhinzugefügte nicht als Backrefrernce benutzt wird's einfach verworfen (gelöscht)...

    Kommentar

    Lädt...
    X