Avatar billede yezbarh Nybegynder
09. september 2005 - 19:14 Der er 7 kommentarer og
1 løsning

http://www. til et link

har en variabel der hedder $row[tekst]
hvordan får jeg den til at lave fx. "www." og "http://" om til et link??
Avatar billede jakobdo Ekspert
09. september 2005 - 19:17 #1
Jeg bruger disse funktioner:

function text_format($str, $target="_blank", $css_class="", $fixlongword = 0)
{
    $str = str_replace("&", "&", $str);
    $str = str_replace("<", "&lt;", $str);
    $str = str_replace(">", "&gt;", $str);
    $str = text_url($str, $target, $css_class);
    $str = text_email($str, $css_class);
    $str = text_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 = text_fix_longword($str, $fixlongword);
   
    $str = addslashes($str);
   
    return $str;
}

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

  return $str;
}

function text_email($str, $css_class="")
{
    $ins_class = "";
    if ($css_class)
        $ins_class = " class=\"".$css_class."\"";
    $str = text_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 text_reduce($str);
}

function text_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 text_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 text_expand($str)
{
    return " ".$str." ";
}

function text_reduce($str)
{
    return substr($str, 1, -1);
}
Avatar billede yezbarh Nybegynder
09. september 2005 - 19:18 #2
Kan du fixe et mere simpelt ét med KUN http:// ?
Tekstens indhold: $row['tekst'];

man skal kunne udskrive med:
$tekst

- tak
Avatar billede jakobdo Ekspert
09. september 2005 - 20:05 #3
Du kan evt nøjes med denne funktion:

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

  return $str;
}
Avatar billede yezbarh Nybegynder
09. september 2005 - 22:19 #4
Hvor bliver $row["tekst"] defineret?
Avatar billede jakobdo Ekspert
09. september 2005 - 23:16 #5
Hvis du tilføjer funktionen, så f.eks. sådan her:
$tekst = text_url($row['tekst'],"_blank","default");
Avatar billede yezbarh Nybegynder
10. september 2005 - 11:29 #6
Jeg siger tak.
Smid svar.

Er er ikke god til det med function indefor php, så undskyld jeg var lidt langsom ;)
Avatar billede jakobdo Ekspert
10. september 2005 - 11:48 #7
Svar!
Avatar billede jakobdo Ekspert
10. september 2005 - 11:50 #8
Takker for point!
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