hyperlinks für derefer übersetzen

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

  • hyperlinks für derefer übersetzen

    hallo ich will einen dereferer bauen der mir automatisch links umwandelt

    als ausgang habe ich z.b.
    Code:
    <a href="http://www.xyz.de" target="_blank">bla</a>
    das target attribut ist manchmal da manchmal nicht, wenn es da ist muß es entfernt werden

    daraus muß ich machen:
    Code:
    <a href="https://meineseite.php?url=http://www.xyz.de">bla</a>
    wie kann ich jetzt am besten direkt nach dem <a href=" meine derefer url einfügen?
    zumal nicht unbedingt immer http folgt sondern auch mal mailto, ftp?

    vorschläge wären

  • #2
    naja,

    du schreibst es ja schon selbst, suchst nach href=" und fügst den schnulli ein, das target zu entfernen ist auch kein problem, ich würd preg-replace nehmen, es geht sicher performanter ...
    EDIT:
    oder sollen die mailto/ftp links unverändert bleiben?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Re: hyperlinks für derefer übersetzen

      Original geschrieben von frank7l7
      vorschläge wären ...
      ... sinnvollerweise die regex ...
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        @hund -> na ja alles außer mailto muß so behandelt werden

        Kommentar


        • #5
          Original geschrieben von frank7l7
          @hund -> na ja alles außer mailto muß so behandelt werden
          auch das geht mit der regex.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            ja das versuche ich ja grade glaub aber mein ansatz geht nach hinten los ich versuche es gar mit schleife ...

            PHP-Code:
            function replace_uri($var){
                
            $cases = array("http://","https://","file://","ftp://");
                
            $step_in "<a href=\"";
                
            $insert "https://inside-past.com/dereferer.php?url=";
                foreach(
            $cases AS $case){
                    
            $res preg_replace("/".$step_in.$case."/si",$insert,$var);
                }
                return 
            $res;} 
            ist noch nicht getestet weil macht glaub ich kein sinn wie würdest du ran gehen?

            Kommentar


            • #7
              ist noch nicht getestet weil macht glaub ich kein sinn wie würdest du ran gehen?
              ich würde nach nem <a suchen, dem irgendwo nen href= folgt, auf welches kein mailto: folgt ... so als erster ansatz.

              btw: es gibt tools, mit denen man die regexp 'trocken' testen kann, zb. 'regexp coach' kenn ich ...
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                PHP-Code:
                    $insert "https://inside-past.com/dereferer.php?url=";
                    
                $res preg_replace("<a href=)((http(s)?|ftp|file|news)://)si",$insert,$var); 
                habs mal geändert -> in nur regex aber ich leider viel zu wenig plan von den ganzen syntax mit was für einen "zeichen" kann ich den überhaupt sagen wo er das $insert machen soll? ... ouuouoh mn

                Kommentar


                • #9
                  VETO: wer braucht so was??

                  nur um "cool" zu sein, im giga-style nach dem motto: "ich hafte für gar nix"??

                  Kommentar


                  • #10
                    FRECHHEIT hier so einfach und unqualifiziert reinzuplatzen völlig ausm kontext dazu noch!

                    @hund der tipp war klasse in dem regex coach klappt es aber nicht in php

                    regex coach -> <a href="((http(s)?|ftp|file|news)://)

                    php -> $regex = "/(<a href=")((http(s)?|ftp|file|news)://)/i";

                    ständig irgendwelche fehler .... WER ERBARMT SICH MEINER UND HELLT MICH AUF

                    Kommentar


                    • #11
                      hmm,

                      hängt sicher am \

                      Code:
                      href=\"(?!mailto)([^\"]*)\"
                      matched imho so, wie du das willst ... der erste klammer-ausdruck ist die url, wenn nicht email ... das replace kriegst damit dann sicher hin ...
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        PHP-Code:
                        $regex "/href=\"(?!mailto)([^\"]*)/i"
                        hmmm geht bis auf das die original url verloren geht also alles nach href=\"

                        meine variante war

                        PHP-Code:
                        $regex "!\<a href=\"((http(s)?|ftp|file|news)://)!i"
                        das hat soweit geklappt aber mir sagt das ! und das \ nix , .... gleich haben wir es .... was meinste stimmt an deiner variante noch nicht?


                        danke

                        Kommentar


                        • #13
                          auf das die original url verloren geht also alles nach href=\"
                          .... was meinste stimmt an deiner variante noch nicht?
                          das ganze macht aber nur spaß, wenn du meine beiträge auch liest ...

                          der erste klammer-ausdruck ist die url, wenn nicht email
                          du mußt dich im replacement natürlich drauf beziehn.
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar


                          • #14
                            PHP-Code:

                                $insert 
                            "href=\"https://inside-past.com/dereferer.php?url=";
                                
                            $regex "href=\"(?!mailto)([^\"]*)/i";
                                
                                

                                
                            $res preg_replace($regex,$insert,$var); 

                            so hab ichs eingefügt aber da kommt immer -> Delimiter must not be alphanumeric or backslash

                            Kommentar


                            • #15
                              wie'n blinddarm
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X