Avatar billede sebast Nybegynder
04. oktober 2005 - 19:42 Der er 10 kommentarer og
2 løsninger

Url2link og highlight fra <?php

Jeg vil gerne have lavet noget preg_replace der laver en url til link og når nogle skriver php i min gæstebog skal det blive med farver.

Det skal den gøres når der enten skrives [code]kode[/code] eller <?php kode ?>
Avatar billede jakobdo Ekspert
04. oktober 2005 - 19:51 #1
Til link:

function text_url($str, $target="_blank", $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;
}

Den anden kan jeg ikke lige lure.
Avatar billede dotcom1 Nybegynder
04. oktober 2005 - 20:04 #2
Avatar billede sebast Nybegynder
04. oktober 2005 - 20:19 #3
jakobdo - echo preg_replace("`((http)+(s)?:(//)|(www\.))((\w|\.|\-|_)+)(/)?(\S+)?`i", "<a href=\"http\\3://\\5\\6\\8\\9\" title=\"\\0\">\\5\\6</a>", $txt); er perfekt. men hvis man sætter et tegn liiige bagefter, tager den det med i urlen.

dotcom1 - det virker ikke
Avatar billede jakobdo Ekspert
04. oktober 2005 - 20:23 #4
sebast, det er jo klart!
Hvordan skal noget kode vide at:
www.exp.dk123 kun skal hedde www.exp.dk?
Du bliver nød til at slutte et link med mellemrum eller intet.
Avatar billede sebast Nybegynder
04. oktober 2005 - 20:33 #5
Eksperten.dk forstår godt at den skal slutte før punktummet.

www.exp.dk!
www.exp.dk.

hvordan kan man lave det?
Avatar billede jakobdo Ekspert
04. oktober 2005 - 20:35 #6
Det var en færdig kode jeg selv har brugt, så mere specifik support kan jeg ikke give! :o(
Avatar billede coderdk Praktikant
04. oktober 2005 - 22:11 #7
Mht. highlight af kode kan du lave noget i stil med dette (antager at du har din text i $text):

    $vis = preg_replace( "#(<\?(php)?.*?\?>)#sie", "highlight_string(stripslashes('\\1'),true)", $text );
    $vis = preg_replace( "#\[code\](.*?)\[/code\]#sie", "highlight_string('<?php\n' . stripslashes('\\1') . '\n?>',true)", $vis );
    echo $vis;
Avatar billede sebast Nybegynder
07. oktober 2005 - 11:30 #8
smid svar allesammen
Avatar billede coderdk Praktikant
07. oktober 2005 - 13:52 #9
hehe ok
Avatar billede jakobdo Ekspert
08. oktober 2005 - 14:36 #10
Svar!
Avatar billede jakobdo Ekspert
08. oktober 2005 - 14:36 #11
Og et til!
Avatar billede jakobdo Ekspert
16. oktober 2005 - 04:22 #12
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