Avatar billede nil.dk Nybegynder
21. maj 2003 - 14:10 Der er 14 kommentarer og
1 løsning

Tagster i JScript

Jeg har et tagster-script (script der opdager URLs i en tekst og laver dem til links) i VBScript (ASP).

Nu har jeg en server, der kører Chili!ASP og kun supporterer RegExp i JScript.

Kan nogen lave/finde en tagster i JScript(ASP)?

nil.dk
Avatar billede roenving Novice
21. maj 2003 - 14:14 #1
Prøv at kigge på ljwebs:

http://www.ljweb.biz/?Ref=usefulscripts
Avatar billede roenving Novice
21. maj 2003 - 14:48 #2
Kommer ud fra denne diskuflere:

http://www.eksperten.dk/spm/77212
Avatar billede roenving Novice
21. maj 2003 - 14:49 #3
-- og jeg fik lige læst hvem der havde lavet nogle af indlæggene !-)
Avatar billede nil.dk Nybegynder
22. maj 2003 - 11:20 #4
Lars's tagster er PHP, jeg søger en i ASP (JScript)
Avatar billede roenving Novice
22. maj 2003 - 13:12 #5
Er ikke lige hverken til regexp eller asp, menoverskriften fangede mig i et vindue og ...

-- jeg er helt klar over det, men jeg læste en kommentar om, at selve regExp'en skulle være det samme, så der var måske en mulighed for at tage de (3?) udtryk med over til Jscript ?-)
Avatar billede pelkjaer Nybegynder
22. maj 2003 - 13:16 #6
Her har du en RegExp med VbScript, så burde det være ligetil at omskrive VB'en til JScript
http://www.4guysfromrolla.com/webtech/tips/t110900-1.shtml
Avatar billede nil.dk Nybegynder
22. maj 2003 - 13:17 #7
roenving >> Ja, du har ret i at jeg kan tage Lars's patterns, men jeg skal så lige have fundet ud af syntaxen i JScript.. men det burde vel ikke være umuligt...
Avatar billede roenving Novice
22. maj 2003 - 13:47 #8
-- den er nu ikke så mystisk:

if (txt.match(reg)!=-1){//txt matcher RegExp-en
Avatar billede roenving Novice
23. maj 2003 - 14:28 #9
-- og så er det selvfølgelig replace, der skal bruges:

txt.replace(reg,replaceString)

-- og så kan jeg selvfølgelig ikke li'e gennemskue, om man så 'bare' kan tage de der regular expressions ud af ljwebs tagster

-- men det vil jeg prøve at kigge på ;-)
Avatar billede roenving Novice
10. juni 2003 - 00:07 #10
Jamen, så fik jeg da kigget på det !-)

Koden herunder virker, men den kan ikke klare flere af den samme type (dvs. hvis de skal udskiftes af den samme replace-linje), så det kræver at strengen splittes før den sendes igennem.

Den er ikke alvorligt stress-testet, men jeg har haft den igennem alle de eksempler, som forekom i den oprindelige test-tråd (den jeg refererer til ovenfor) -- de eneste gange, den opfører sig anderledes er ved ovenfornævnte gentagelser.

Håber du kan bruge det !-)


<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
/*
    ****Original file desciption:*********************
    ****File : tagster_lib.php
    ****Version : 3.0
    ****Date : September 22nd, 2002
    ****Author : Lars B. Jensen, lars.jensen@ljweb.com
        ****
    ****Module Description
    ****Module to transform URL and E-Mail addresses into clickable links.
        ****
    ****Instruction
    ****To utilize the tagster_lib library, copy this file to a location on your server. Include the
    ****library into your php document or template.
    ****Use the function tagster_format to extract and modify all links and emails in a given string.
    ****The parameters $target handling the target for links and $class for handling css on <a> tags are
    ****both optional.
    ****
    ****Example   
    ****include('lib/tagster_lib.php');
    ****$str = tagster_format($str, "_blank", "mystyle");
        ****
    ****Note
    ****This module library has support for the scandinavian specialchars æ, ø and å.
    ****
    ****
    ****Public Functions
    ****--------------------------------------------------------------´
    ****function tagster_format($str, $target, $css_class, $fixlongword)
    ****function tagster_url($str, $target, $class)
    ****function tagster_email($str, $class)
    ****
    ****Private Functions
    ****--------------------------------------------------------------´
    ****function tagster_fix_endchar($str)
    ****function tagster_expand($str)
    ****function tagster_reduce($str)
    ****function tagster_fix_longword($str, $maxlen)
    ************************************************
       
    Rewritten june 2003 by roenving
    Transformation to javascript-functions
   
    Added Private function:
    function str_replace(ch,nch,str)

*/
    function tagster_format(str, target, css_class, fixlongword) {
      switch(tagster_format.arguments.length){
        case 3:
          fixlongword = 0;
          break;
        case 2:
          fixlongword = 0;
          css_class = "";
          break;
        case 1:
          fixlongword = 0;
          css_class = "";
          target="_blank";
      }
                       
        str = str_replace("&", "&amp;", str);
        str = str_replace("<", "&lt;", str);
        str = str_replace(">", "&gt;", str);
        str = tagster_url(str, target, css_class);
        str = tagster_email(str, css_class);
        str = tagster_fix_endchar(str);
        str = str_replace("  ", "&nbsp; ", str);
        str = str_replace("\t", "&nbsp;&nbsp;&nbsp; ", str);
        str = str_replace("\r", "", str);
        str = str_replace("\n", "<br>", str);
       
        if (fixlongword != 0) str = tagster_fix_longword(str, fixlongword);
        return str;
    }


    function tagster_url(str, target, css_class) {
        ins_str = "";
        if (css_class) ins_str += " class='"+css_class+"'";
        if (target) ins_str += " target='"+target+"'";
        str = tagster_expand(str);
        str = str.replace (/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i, "<a href='\$1://\$2'"+ins_str+">\$1://\$2</a>");
        str = str.replace (/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i, "\$1<a href='http://\$2\$3'"+ins_str+">\$2\$3</a>");
        str = str.replace (/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i, "\$1<a href='ftp://\$2\$3'"+ins_str+">\$2\$3</a>");
        return tagster_reduce(str);
    }


    function tagster_email(str, css_class) {
        if (tagster_email.arguments.length==1)css_class="";
        ins_class = "";
        if (css_class) ins_class = " class='"+css_class+"'";
        str = tagster_expand(str);
        str = str.replace (/([\s\"])([\w\.\-_]+)@([\w\-_]+)\.([\w\.\-_]+)/i, "\$1<a href='mailto:\$2@\$3.\$4'"+ins_class+">\$2@\$3.\$4</a>");
        return tagster_reduce(str);
    }


    function tagster_fix_endchar(str) {
        str = str.replace (/([\'\"\)\]\.\,\?\!]+)\">/i, "\42>");
        str = str.replace (/([\'\"\)\]\.\,\?\!]+)\" (target|class)=\"/i, "\42 \$2=\42");
        str = str.replace (/([\'\"\)\]\.\,\?\!]+)<\/a>/i, "</a>\$1");
        return str;
    }

    function tagster_fix_longword(str, maxlen) {
        if (tagster_fix_longword.arguments.length==1)maxlen = 10;
        sw = 0;
        in_tag = false;
        str_size = str.length;
        res = "";

        for (i=0; i<str_size; i++){
            if (str.charAt(i) == '<') in_tag = true;
            else if (str.charAt(i) == ' ') sw = 0;

            if (!in_tag && ((sw++) > maxlen)) {
                res += '&shy;';
                sw = 0;
            }
           
            if (str.charAt(i) == '>') in_tag = false;
            res += str.charAt(i);
        }
       
        return res;
    }

    function tagster_expand(str) {
        return " "+str+" ";
    }

    function tagster_reduce(str) {
        return str.substr(1, str.length-2);
    }

    function str_replace(ch,nch,str){
        var chl = ch.length;
        var nchl = nch.length;
        var i = str.indexOf(ch);
        while(i>-1){
            str = str.substring(0,i)+nch+str.substring(i+chl);
            i = str.indexOf(ch,i+nchl);
        }
        return str;
    }
   
</SCRIPT>
Avatar billede roenving Novice
10. juni 2003 - 01:33 #11
-- og jeg fik tilføjet en funktion, som får gentagelserne med ...

    function splitAndTag(a){
        var c, d, b = a.split("\r");
        for(i=0;b.length>i;i++){
            c = b[i].split("\t");
            for(j=0;c.length>j;j++){
                d = c[j].split(" ")
                for (k=0;d.length>k;k++){
                    d[k] = tagster_format(d[k]);
                }
                c[j] = d.join(" ");
            }
            b[i] = c.join("\t");
        }
        return b.join("\r");
    }

-- så virker det vist som det skal -- der hvor jeg _har_ testet

-- så er det jo lige, at jeg godt vil vide, hvis der er fejl -- nogle hjørner er jo slet ikke testet for alvor.

hth
jes
Avatar billede nil.dk Nybegynder
10. juni 2003 - 15:27 #12
Jeg tester den éb af dagene.. er meget ophængt lige nu.

Men kanon arbejde...

/mads.
Avatar billede nil.dk Nybegynder
24. juli 2003 - 13:20 #13
vil du svare roenving?
Avatar billede roenving Novice
28. juli 2003 - 13:05 #14
Kan den det du har brug for ?-)
Avatar billede roenving Novice
28. juli 2003 - 22:03 #15
-- og tak for points ;~}
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
Kurser inden for grundlæggende programmering

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