preg_replace hilfe

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

  • preg_replace hilfe

    Hallo,

    ich würde gerne alle meine Urls die auf ?forum-xyz

    enden umschreiben in:

    forum-xyz.html

    Leider war ich nicht konsequent und habe teilweise auch:

    ?forum-xyz=0&x=z

    benutzt...

    Für das erste Beispiel funktioniert der folgende Ausdruck probleml los:
    Code:
    $content = preg_replace ("/\"\?([^\"#]*)/si","\"\\1.html",$content);
    Für das zweite aber nicht. Hier möchte ich zusätzlich sagen können: Wandel die Url in .html um, aber nur wenn in ihr kein Zeichen wie z.B. '&' oder '=' vorkommt.
    Ist soetwas überhaupt möglich und wenn ja wie ... vielen Dank!
    meine Seite mit vielen guten PHP Scripten :

    http://www.ilch.de

  • #2
    ist doch kein problem. wie man zeichen ausschließen kann, steht afaik in unserem Tutorial.

    ansonsten kannst du auch alle erlaubten zeichen angeben,

    [-a-z] oder [-a-z0-9] oder was auch immer...

    Kommentar


    • #3
      öm danke ... aber wie ich Zeichen ausschliesse weis ich ja, steht ja auch in dem Ausdruck. Alles bis ein \" oder # kommt.

      Das Problem:

      eine url wie: <a href="?forum-xyz">forum-xyz</a>
      wird wie er es soll in:

      forum-xyz.html umgewandelt

      eine url wie:

      <a href="?forum-xyz=0&x=z">forum-xyz</a>

      wird allerdings mit meinem ausdruck in:

      forum-xyz.html&x=z

      umgewandelt... hier soll das ganze aber so bleiben wie es ist.
      meine Seite mit vielen guten PHP Scripten :

      http://www.ilch.de

      Kommentar


      • #4
        wie gesagt, gib einfach die zeichen an, die erlaubt sind:

        PHP-Code:
        $text '<a href="?forum-xyz">forum-xyz</a> bla <a href="?forum-xyz=0&x=z">forum-xyz</a>';
        echo 
        preg_replace ('%\"\?([-a-z]+)\"%Uis',"\\1.html",$text); 

        Kommentar


        • #5
          PHP-Code:
          $text '<a href="?forum-xyz">forum-xyz</a> bla <a href="?forum-xyz=0&x=z">forum-xyz</a>';
          echo 
          preg_replace ('%\"?([-a-z]+)\"%Uis',"\"\\1.html\"",$text); 
          dein code leicht angepasst damit überhaupt was dabei raus kommt:

          -> ouput:

          [code]
          <a href=".html"?forum-xyz.html>forum-xyz</a> bla <a
          href=".html"?forum-xyz=0&x="z.html">forum-xyz</a>
          [code]
          meine Seite mit vielen guten PHP Scripten :

          http://www.ilch.de

          Kommentar


          • #6
            dein code leicht angepasst damit überhaupt was dabei raus kommt:
            Achtung, das Forum klaut schonmal gerne das ein oder andere zeichen. Im QUOTE nachgucken

            Kommentar


            • #7
              hehe danke, also mit der hilfe habe ich es geschaft ich denke du hättest einfach noch ein \ (backslash) vor das frage zeichen am anfang schreiben müssen.

              hab das jetzt mal komplett gemacht ...

              Code:
                    $c = preg_replace ('%href=\"\?([^\"]+)\"%Uis',"href=\"index.php?\\1\"",$c);
                    $c = preg_replace ('%href=\"index.php\?([-a-z0-9A-Z]+)#([a-zA-Z0-9]+)\">%Uis',"href=\"\\1.html#\\2\">",$c);
                    $c = preg_replace ('%href=\"index.php\?([-a-z0-9A-Z]+)\">%Uis',"href=\"\\1.html\">",$c);
              1 alle auf index.php schreiben... fals die späteren replaces nicht funktionieren das wenigstens die alte methode funktioniert.
              2. alle mit # nehmen damit die ausnahme richtig behandelt wird
              3. alle andere was trifft umschreiben.

              funktioniert bis jetzt recht gut.
              meine Seite mit vielen guten PHP Scripten :

              http://www.ilch.de

              Kommentar


              • #8
                ich denke du hättest einfach noch ein \ (backslash) vor das frage zeichen am anfang schreiben müssen.
                Drück mal bei meinem Posting auf Zitat!

                BTW: a-zA-Z bei Modifierer i, da kannste dir ein a-z gerne sparen. Ist ja eh case-insensitiv.

                Kommentar

                Lädt...
                X