regex spezialist gesucht die zweite

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • regex spezialist gesucht die zweite

    tach auch,

    hab am montag projektabgabe und noch ne latte dafür zu erledigen.
    ein problem krieg ich nicht so schnell gelöst da ich mich mit regex kram nicht so gut auskenne. also wer mir als erstes ne lösung serviert der kriegt direkt 40 Euronen serviert ->

    also ich hab eine variable siehe anhang


    die folgende funktion, die ich mit hilfe dieses und andere foren unter streßigsten missverständnisse meinerseits zusammen gebaut haben, überprüft alle links in der var und bereitet diese für eine https dereferer auf. Zweck der ganzen sache -> externe verlinkung von https zu http seiten. dabei überprüft die funktion auch ob intern verlinkt wurde und läßt so interne links unberüht das gleiche gilt für mailto links. mein problem ist das ich die externen links nun auch noch in das rawurl format codieren muß (das hab ich eben erst geschnallt). als beispiel:

    <A HREF="http://www.test.de?id=1&lg=de" target="_self">rechtlich</A>

    (der link befindet sich in der var)

    als ausgabe bekomme ich:
    <A target="_blank" href="https://inside-past.com/dereferer.php?url=www.test.de?id=1&lg=de">rechtlich</A>

    was im prinzip auch korrekt ist! nun muß ich aber eben alles was an url= angehängt wird noch rawurl encodieren und hier liegt das problem meine versuche sind bis jetzt missglückt und mir rennt die zeit weg. dabei ist mir aufgefallen das ich mir auch nicht so sicher bin ob diese funktion die sauberste lösung ist.

    also dann mal ran jungs. unten steht die original funktion, im anhang die var. wenn ihr die mal durchlaufen lasst seht ihr wo ich hinwill.

    der, derwelcher eine saubere lösung abliefert - dem seien die euronen gewiss

    by the way -> bitte nur auf rechnung!


    PHP-Code:
    function replace_uri($var){

        
    $regex2 "!target=\"_(self|parent|top|blank)\"!i";
        
    $var preg_replace($regex2,"",$var);
        
        
    $rest $var;
        
    $ergebnis "";

        
    $insert "<a target=\"_blank\" href=\"https://inside-past.com/dereferer.php?url=";
        
    $regex1 "!^(.*?)<a href=\"(https?|ftp|file|news)://(.{19})(.*?)$!si";

        while(
    preg_match($regex1,$rest,$matches)):
            
    $ergebnis.=$matches[1];
            if(
    preg_match("!(www\.)?inside-past\.com!i",$matches[3])):
                
    $ergebnis.='<a href="'.$matches[2].'://'.$matches[3];
            else:
                
    $ergebnis.=$insert.$matches[3];
            endif;
            
    // der noch zu überprüfende Rest wird in $rest gespeichert, worin dann in der nächsten Runde gesucht wird
            
    $rest=$matches[4];
        endwhile;
    return 
    $ergebnis.$rest;} 
    Angehängte Dateien

  • #2
    Re: regex spezialist gesucht

    wenn ich das jetzt richtig verstanden habe, ist $matches[3] doch der teil, der im else-teil hinter ?url= angehängt wird - also warum schreibst du an der stelle
    PHP-Code:
    else:
         
    $ergebnis.=$insert.$matches[3]; 
    nicht stattdessen einfach
    PHP-Code:
    else:
         
    $ergebnis.=$insert.rawurlencode($matches[3]); 
    hin ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      regex spezialist gesucht die zweite

      um nicht als idiot dazustehen,

      wahsaga wenn du die sache mal ausprobiert hättest - hättest du gesehen das im prinzip zwar so logisch wäre defakto aber nicht funktioniert weil es irgendwo in der funktion einen bug gibt und ich komm nicht drauf.

      deshalb bat ich ja auch um eine funktionierende lösung und bete immer noch darum -> mit anderen worten ich brauch noch eine lösung.

      dummerweise kann ich auf mein jobangebot nicht antworten also deshalb nochmal -> das problem besteht immer noch, lösung gesucht

      amen

      Kommentar

      Lädt...
      X