regex spezialist gesucht die zweite

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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;} 
    Attached Files

  • #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.

    Comment


    • #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

      Comment

      Working...
      X