Avatar billede lademan Novice
24. juni 2003 - 10:04 Der er 17 kommentarer og
2 løsninger

Tilføje billedefunktion

Hej.

Jeg har med meget stor tilfreds brugt LBJ's tagster, men der mangler kun én finesse: at billedelinks (jpg, gif, bmp) omdannes til rigtige billeder.

Jeg har forsøgt om jeg kunne gøre noget ved problemet selv, men jeg kommer hele tiden i konklikt med den funktion, der laver links'ene.

Kan i hjælpe mig?

Mvh

Lademan

<?php
/*
    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)
*/

    function tagster_format($str, $target="_blank", $css_class="", $fixlongword = 0) {
        $str = str_replace("&", "&amp;", $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 = preg_replace ("/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "<a href=\"\\1://\\2\"".$ins_str.">\\1://\\2</a>", $str);
        $str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"http://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
        $str = preg_replace ("/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#%@&:;=!',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i", "\\1<a href=\"ftp://\\2\\3\"".$ins_str.">\\2\\3</a>", $str);
        return tagster_reduce($str);
    }


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


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

    function tagster_fix_longword($str, $maxlen = 10) {
        $sw = 0;
        $in_tag = false;
        $str_size = strlen($str);
        $res = "";

        for ($i=0; $i<$str_size; $i++){
            if ($str[$i] == '<') $in_tag = true;
            else if ($str[$i] == ' ') $sw = 0;

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

    function tagster_expand($str) {
        return " ".$str." ";
    }

    function tagster_reduce($str) {
        return substr($str, 1, -1);
    }
?>
Avatar billede lademan Novice
24. juni 2003 - 10:05 #1
Slår emailen fra
Avatar billede lademan Novice
24. juni 2003 - 10:27 #2
Er der nogle bud? :o)
Avatar billede lademan Novice
24. juni 2003 - 11:05 #3
Det er måske ikke så let som jeg troede :-O
Avatar billede lademan Novice
24. juni 2003 - 11:11 #4
100 point kan heller ikke afhjælpe?
Avatar billede avminarm Juniormester
24. juni 2003 - 12:06 #5
function tagster_format($str, $target="_blank", $css_class="", $fixlongword = 0) {
        $str = str_replace("&", "&amp;", $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);
        $str = eregi_replace("([a-z0-9_.-:/]+).(gif|jpg)","<img src='\\1.\\2'>", $str); //sat ind her - ref: http://www.eksperten.dk/spm/366966

       
        if ($fixlongword != 0) $str = tagster_fix_longword($str, $fixlongword);
        return $str;
    }
Avatar billede lademan Novice
24. juni 2003 - 12:57 #6
Det er et skridt på vejen, men ikke helt godt nok :-)
Tjek her: www.surfersinfo.dk/test.php
Avatar billede lademan Novice
24. juni 2003 - 13:01 #7
Bl.a. kommer der de mærkeligste links ud af det ?-)
Avatar billede avminarm Juniormester
24. juni 2003 - 13:12 #8
prøv sådan

function tagster_format($str, $target="_blank", $css_class="", $fixlongword =  0) {
        $str = eregi_replace("([a-z0-9_.-:/]+).(gif|jpg)","<img src='\\1.\\2'>", $str); //sat ind her - ref: http://www.eksperten.dk/spm/366966
        $str = str_replace("&", "&amp;", $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;
    }
Avatar billede lademan Novice
24. juni 2003 - 13:16 #9
Det virker ikke helt, tjek www.surfersinfo.dk/test.php
hvor det fremgår, at den skriver følgende ved billederne:

<img src='<a href="http://www.eksperten.dk/img/eksperten_logo_new.gif" target="_blank">http://www.&shy;eksperten.dk&shy;/img/ekspert&shy;en_logo_new.&shy;gif</a>'>
Avatar billede lademan Novice
24. juni 2003 - 13:23 #10
Det er egentlig også klart nok, da link-tagsteren ryger igennem efterfølgende...
Avatar billede lademan Novice
24. juni 2003 - 13:25 #11
Men hvis man lige kunne sætte en parameter på link-tagsteren, at den ikke skal røre links med endelserne gif eller jpg, så ville det virke... jeg vet bare ikke hvordan man gør
Avatar billede avminarm Juniormester
24. juni 2003 - 13:55 #12
måske skal set køre som en funktion for sig selv efter tagster lib har kørt:

function linktoimg($str){
  $str = eregi_replace("([a-z0-9_.-:/]+).(gif|jpg)","<img src='\\1.\\2'>", $str); //sat ind her - ref: http://www.eksperten.dk/spm/366966
}
Avatar billede lademan Novice
24. juni 2003 - 14:18 #13
nej det løser jo ikke problemet..
Avatar billede avminarm Juniormester
24. juni 2003 - 14:36 #14
indsætter du selv billederne i teksten eller hvad?
Avatar billede lademan Novice
24. juni 2003 - 19:02 #15
Nej det skal bruges til et forum.

Der er ikke andre, der kan løse problemet, hvis spørgsmålet hæves til 100 point ?
Avatar billede avminarm Juniormester
25. juni 2003 - 09:11 #16
definerer du selv tags i forum?
Avatar billede marduk666 Nybegynder
27. juni 2003 - 13:25 #17
http://www.sote.dk/images/logo.jpg
http://site.dk/images/logo.jpg
www.site.dk/images/logo.jpg




$str = "j0w jhwwwarygwrhg http://linktilurl.dk/billede.gif dfsdgsg";


$str = str_replace("[img]http://www", "[img]tpurlwurl", $str);
$str = str_replace("[img]http://", "[img]tpurl", $str);
$str = str_replace("[img]www", "[img]wurl", $str);

$str = ereg_replace("\[img=([^]]+)-([^]]+)\]http://www", "[img=\\1-\\2]tpurlwurl", $str);
$str = ereg_replace("\[img=([^]]+)-([^]]+)\]http://", "[img=\\1-\\2]tpurl", $str);
$str = ereg_replace("\[img=([^]]+)-([^]]+)\]www", "[img=\\1-\\2]wurl", $str);


$str = preg_replace("/\[img\]tpurlwurl(.*)\[\/img\]/iU", "<img src=\"http://www\\1\" border=\"0\">", $str);
$str = preg_replace("/\[img\]tpurl(.*)\[\/img\]/iU", "<img src=\"http://\\1\" border=\"0\">", $str);
$str = preg_replace("/\[img\]wurl(.*)\[\/img\]/iU", "<img src=\"http://www\\1\" border=\"0\">", $str);

$str = preg_replace("/\[img\](.*)\[\/img\]/iU", "<img src=\"\\1\" border=\"0\">", $str);


print $str;



sådan en?
Avatar billede avminarm Juniormester
27. juni 2003 - 13:31 #18
for hvis du selv definerer tags - vil marduk666's sandsyneligvis virker ;o)
Avatar billede avminarm Juniormester
18. juli 2003 - 11:39 #19
lukketid?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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