Avatar billede nil.dk Nybegynder
30. maj 2001 - 09:52 Der er 34 kommentarer og
3 løsninger

;\'er

http://www.eksperten.dk/spm/77029

Hvorfor i alverden bliver Eksperten ved med at sætte dumme semikolonner ind i mine kodeeksempler?

nil.dk
Avatar billede spectual Nybegynder
30. maj 2001 - 09:54 #1
konstruktionsfejl?
Avatar billede nil.dk Nybegynder
30. maj 2001 - 09:56 #2
Jeg har bare ikke oplevet det før.
Avatar billede htx98i17 Professor
30. maj 2001 - 09:57 #3
www.skod.dk
gør den det også her mon...
Avatar billede htx98i17 Professor
30. maj 2001 - 09:58 #4
nææ, det gjorde den ik,
Avatar billede nil.dk Nybegynder
30. maj 2001 - 09:59 #5
Avatar billede nil.dk Nybegynder
30. maj 2001 - 09:59 #6
hmmm... mystisk
Avatar billede htx98i17 Professor
30. maj 2001 - 10:00 #7
Avatar billede spectual Nybegynder
30. maj 2001 - 10:01 #8
If Request.ServerVariables(\"HTTP_REFERER\") <> \"http://www.test.dk/test\" Then Response.Redirect(\"www.test.dk/test\")
Avatar billede htx98i17 Professor
30. maj 2001 - 10:01 #9
der var den :-)
Avatar billede spectual Nybegynder
30. maj 2001 - 10:01 #10
hehe... gør det stadigvæk :)
Avatar billede nil.dk Nybegynder
30. maj 2001 - 10:01 #11
If Request.ServerVariables(\"HTTP_REFERER\") = \"http://www.jubii.dk\" Then Response.Redirect(\"www.test.dk/test\")
Avatar billede spectual Nybegynder
30. maj 2001 - 10:01 #12
Avatar billede spectual Nybegynder
30. maj 2001 - 10:02 #13
der var den...

\"banan\"
Avatar billede spectual Nybegynder
30. maj 2001 - 10:02 #14
Avatar billede nil.dk Nybegynder
30. maj 2001 - 10:02 #15
det er pga skråstregen..
Avatar billede spectual Nybegynder
30. maj 2001 - 10:02 #16
Avatar billede nil.dk Nybegynder
30. maj 2001 - 10:03 #17
Avatar billede spectual Nybegynder
30. maj 2001 - 10:03 #18
Avatar billede spectual Nybegynder
30. maj 2001 - 10:04 #19
Men det skal også være i \" ellers gør den det ikke.

\"test/test\"
Avatar billede nil.dk Nybegynder
30. maj 2001 - 10:04 #20
Det er kombinationen mellem \" og /
Avatar billede htx98i17 Professor
30. maj 2001 - 10:04 #21
gad vide hvorfor de har lavet det sådan...
Avatar billede spectual Nybegynder
30. maj 2001 - 10:05 #22
altså :

1) Det skal være et link

2) Det skal være i gåseøjne

3) Der skal indgå / i linket
Avatar billede spectual Nybegynder
30. maj 2001 - 10:05 #23
tænke tænke
Avatar billede htx98i17 Professor
30. maj 2001 - 10:07 #24
Avatar billede spectual Nybegynder
30. maj 2001 - 10:10 #25
Det er en lille fejl i hans asp.

Ser man på stedet:

&quot;<A HREF=\"http://www.banan.dk/ananas&quot\" TARGET=\"_blank\">www.banan.dk/ananas&quot</A>;

er det tydeligt at det sidste simikolon hører sammen med den der &quot der kommer lige inden </A>
Avatar billede spectual Nybegynder
30. maj 2001 - 10:11 #26
Hov..

;<A HREF=\"http://www.banan.dk/ananas&quot\";

Der skal da heller ikke være &quot med i linket....
Avatar billede spectual Nybegynder
30. maj 2001 - 10:12 #27
det er nok hans link-parser der er en fejl i....
Avatar billede admin Novice
30. maj 2001 - 11:34 #28
Det er vores E-mail/link parser som har et problem. Den sætter ; ind hvis det sidste tegn er et \" og hvis der er path.
Eks: www.eksperten.dk/test\";

Fejlen vil blive rettet, og har nogen lyst til at hjælpe er I meget velkomne :)

Her er problembarnet :

<?
    class tagster {

        function email_tagster ($str) {

            $goodchars1 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";
            $goodchars2 = \".-_\";

            $mailto_tag1 = \"<A HREF=\\\"mailto:\";
            $mailto_tag2 = \"\\\">\";
            $mailto_tag3 = \"</A>\";

            // find antal @
            /*
            $ats = count_chars($str);
            $ats = $ats[ord(\"@\")];
            */
            $ats = explode(\"@\", $str);
            $ats = count($ats);

            do {

                $ats_n++;
                $pos_at = intval(strpos($str, \"@\", $pos_at));
                $passed_dot = false;

                if ($pos_at == 0) {
                    break;
                }

                $strlen = strlen($str);

                // find start
                for ($n = ($pos_at - 1); $n > 0; $n--) {        // spol tilbage indtil vi finder bad char.
                    if (strpos($goodchars1.$goodchars2, substr($str, $n, 1)) === false) {
                        $n++;
                        break;
                    }
                }
                // sørg for at vi ikke starter med $goodchars2
                for ($n = $n; $n <= $strlen; $n++) {            // spol frem indtil vi finder good char.
                    if (strpos($goodchars2, substr($str, $n, 1)) === false) {
                        break;
                    }
                }
                $pos_start = $n;

                // find end
                for ($n = ($pos_at + 1); $n <= $strlen; $n++) {    // spol frem indtil vi finder good char.
                    if (!$passed_dot && substr($str, $n, 1) == \".\") {
                        $passed_dot = true;
                    }
                    if (strpos($goodchars1.$goodchars2, substr($str, $n, 1)) === false) {
                        break;
                    }
                }
                // sørg for at vi ikke ender med $goodchars2
                do {
                    $n--;
                    if (strpos($goodchars2, substr($str, $n, 1)) === false) {
                        $n++;
                        break;
                    }
                } while ($n > 0 && !(strpos($goodchars2, substr($str, $n, 1)) === false));
                $pos_end = $n;

                $email = substr($str, $pos_start, $pos_end - $pos_start);
                $pos_plus = strlen($mailto_tag1.$mailto_tag2.$mailto_tag3.$email);
                $email = $mailto_tag1.$email.$mailto_tag2.$email.$mailto_tag3;

                if ($pos_at == $pos_start || $pos_at == ($pos_end - 1) || !$passed_dot) {
                    $is_email = false;
                } else {
                    $is_email = true;
                }

                if ($is_email) {
                    $new_str  = substr($str, 0, $pos_start);
                    $new_str .= $email;
                    $new_str .= substr($str, $pos_end);

                    $str = $new_str;
                    $strlen = strlen($str);

                    $pos_at = $pos_end + $pos_plus;
                } else {
                    $pos_at = $pos_end;
                }

            } while ($ats_n <= $ats);

            return $str;
        }

        function url_tagster ($str) {

            $start_tag_array = array(\"www.\", \"http://\");
            $goodchars1 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";
            $goodchars2 = \".-\";
            $goodchars3 = \"/_#?&=~;,\";

            $link_tag_1 = \"<A HREF=\\\"\";
            $link_tag_2 = \"\\\" TARGET=\\\"_blank\\\">\";
            $link_tag_3 = \"</A>\";
            $link_tag_4 = \"http://\";

            $strlen = strlen($str);

            // find antal start tags
            $start_tags1 = explode($start_tag_array[0], $str);
            $start_tags2 = explode($start_tag_array[1], $str);
            $start_tags = count($start_tags1) + count($start_tags2) - 2;

            do {

                $start_tags_n++;
                $passed_slash = false;
                $passed_dot = false;

                // find start tag
                $pos_start_1 = strpos(strtolower($str), $start_tag_array[0], $pos_start);
                $pos_start_2 = strpos(strtolower($str), $start_tag_array[1], $pos_start);

                if ($pos_start_1 === false && $pos_start_2 === false) {
                    break;
                }

                if ($pos_start_1 === false) { $pos_start_1 = $strlen; }
                if ($pos_start_2 === false) { $pos_start_2 = $strlen; }

                if ($pos_start_1 < $pos_start_2) {
                    $pos_start = $pos_start_1;
                    $pos_search = $pos_start + strlen($start_tag_array[0]);
                } else {
                    $pos_start = $pos_start_2;
                    $pos_search = $pos_start + strlen($start_tag_array[1]);
                }

                // find end tag
                for ($n = $pos_search; $n <= $strlen; $n++) {
                    if (!$passed_slash && substr($str, $n, 1) == \"/\") {
                        $passed_slash = true;
                    }
                    if (!$passed_slash && !$passed_dot && substr($str, $n, 1) == \".\") {
                        $passed_dot = true;
                    }
                    if ($passed_slash) {
                        // vi er forbi /
                        if (strpos($goodchars1.$goodchars2.$goodchars3, substr($str, $n, 1)) === false) {
                            break;
                        }
                    } else {
                        // vi er ikke forbi /
                        if (strpos($goodchars1.$goodchars2, substr($str, $n, 1)) === false) {
                            break;
                        }
                    }
                }
                // sørg for at vi ikke ender med $goodchars2 eller $goodchars3
                do {
                    $n--;
                    if (strpos($goodchars2.$goodchars3, substr($str, $n, 1)) === false) {
                        $n++;
                        break;
                    }
                } while ($n > 0 && !(strpos($goodchars2.$goodchars3, substr($str, $n, 1)) === false));
                $pos_end = $n;

                $link = substr($str, $pos_start, $pos_end - $pos_start);
                $pos_plus = strlen($link_tag_1.$link_tag_2.$link_tag_3.$link);
                if (strtolower(substr($link, 0, strlen($link_tag_4))) != $link_tag_4) {
                    $pos_plus = $pos_plus + strlen($link_tag_4);
                    $link = $link_tag_1.$link_tag_4.$link.$link_tag_2.$link.$link_tag_3;
                } else {
                    $link = $link_tag_1.$link.$link_tag_2.$link.$link_tag_3;
                }

                if ($passed_dot) {
                    $new_str  = substr($str, 0, $pos_start);
                    $new_str .= $link;
                    $new_str .= substr($str, $pos_end);

                    $str = $new_str;
                    $strlen = strlen($str);

                    $pos_start = $pos_end + $pos_plus;
                } else {
                    $pos_start = $pos_end;
                }

            } while ($start_tags_n <= $start_tags);

            return $str;

        }

    }
?>
Avatar billede spectual Nybegynder
30. maj 2001 - 11:39 #29
hvordan hitter i selv rede i den kode? :) eller er det mig der ikke er vant til at se php kode... :P
Avatar billede limemedia Nybegynder
30. maj 2001 - 14:47 #30
admin >> hvad med den her...

<?php
    function string_tagster($str) {
        $str = eregi_replace(\"((f|ht)tp:\\/\\/[a-z0-9~#%@\\&:=?\\/\\._-]+[a-z0-9~#%@\\&=?\\/_-]+)\", \"<A HREF=\\\"\\\\1\\\" TARGET=\\\"_blank\\\">\\\\1</A>\", $str);
        $str = eregi_replace(\"([[:space:]a-z0-9{()\\\"\'\\[~#%@\\&:=?\\._-])(www.[a-z0-9~#%@\\&:=?\\/\\._-]+[a-z0-9~#%@\\&=?\\/_-]+)\", \"\\\\1<A HREF=\\\"http://\\\\2\\\" TARGET=\\\"_blank\\\">\\\\2</A>\", $str);
        $str = eregi_replace(\"([_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3})\",\"<A HREF=\\\"mailto:\\\\1\\\">\\\\1</A>\", $str);
        return $str;
    }
?>

den er godt nok ikke på 161 linier, men i mine tests kunne jeg ikke umiddelbart få den til at fejle.


/ Lars
Avatar billede jd Nybegynder
30. maj 2001 - 14:57 #31
ljweb-> ...men laver den også www.noget.dk om til links?
Avatar billede limemedia Nybegynder
30. maj 2001 - 14:59 #32
jd >> ja
Avatar billede spectual Nybegynder
31. maj 2001 - 10:37 #33
og den kan håndtere www.noget.dk\" ?
Avatar billede spectual Nybegynder
31. maj 2001 - 10:38 #34
Avatar billede spectual Nybegynder
14. juni 2001 - 15:10 #35
\"www.fejlen/rettet?/\"
Avatar billede spectual Nybegynder
14. juni 2001 - 15:10 #36
jammen hold da ... ;)
Avatar billede limemedia Nybegynder
14. juni 2001 - 15:13 #37
spectual >> *smil*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Alle kurser indenfor Microsoft 365 – både til begyndere og øvede.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester