Avatar billede nocs Nybegynder
07. oktober 2004 - 22:05 Der er 7 kommentarer og
1 løsning

url replace i tekst

Dette spm. er set mange gange før, men kan ikke finde den optimale løsning.

Løsningen skal foregå lidt ala http://eksperten.dk/spm/379318 altså hvor man skriver fedt link som bliver til <a href="http://brunfarin.dk">fedt link</a>, mens hvis der ikke bliver skrevet [url]-kode men bare http://brunfarin.dk skal dette blive til link.

Har rodet med følgende kode:

    $mainContent = ereg_replace("\[url=http://([^]]+)\]", "<a href='http://\\1' target='_blank' class='main'>", $mainContent);
    $mainContent = ereg_replace("\[url=www([^]]+)\]", "<a href='http://www\\1' target='_blank' class='main'>", $mainContent);
    $mainContent = ereg_replace("\[/url\]", "</a>", $mainContent);
  $mainContent = preg_replace("/((mailto|http|ftp|nntp|news):.+?)(&gt;|\\s|\\)|\"|\\.\\s|$)/","<a href=\"\\1\" target=\"_blank\">\\1</a>\\3",$mainContent);
  $mainContent = preg_replace("/ (\S+@\S+.\S{2,4}) /"," <a href='mailto:\\1'>\\1</a> ",$mainContent);
Avatar billede bojo Nybegynder
08. oktober 2004 - 07:41 #1
denne hvis jeg forstår dig ret

<?   
    $message="[url]http://www.test.dk[/url]";


    $fra = '#\[url\]http://(.*?)\[/url\]#si';
    $til = '<a href="http://\1" target="_blank">http://\1</a>';
    $message = preg_replace($fra, $til, $message);
    echo $message;
?>
Avatar billede bojo Nybegynder
08. oktober 2004 - 07:46 #2
hov, du ville have [url=  så er det

$fra = '#\[url\=http://(.*?)\[/url\]#si';
Avatar billede bojo Nybegynder
08. oktober 2004 - 07:48 #3
atter hov - så ikke du havde beskrivelse med i [url= roder lidt mere
Avatar billede bojo Nybegynder
08. oktober 2004 - 07:51 #4
sådan

<?   
    $message="tekst";


    $fra = '#\[url\=http://(.*?)\](.*?)\[/url\]#si';
    $til = '<a href="http://\1" target="_blank">\2</a>';
    $message = preg_replace($fra, $til, $message);
    echo $message;
?>
Avatar billede bojo Nybegynder
08. oktober 2004 - 08:15 #5
eller som en funktion du kan bugge videre på

<?   
function rep( $message ) {

    $fra[0] = '#\[url\=http://(.*?)\](.*?)\[/url\]#si';
    $til[0] = '<a href="http://\1" target="_blank">\2</a>';
   
    $fra[1] = '#\[url\=www\.(.*?)\](.*?)\[/url\]#si';
    $til[1] = '<a href="http://www.\1" target="_blank">\2</a>';   

    for ($i=0;$fra[$i]!="";$i++) {
        $message = preg_replace($fra[$i], $til[$i], $message);
    }
   
    return $message;
}


echo rep("tekst")."<p>";
echo rep("tekst")."<p>";
   
?>
Avatar billede nocs Nybegynder
20. oktober 2004 - 15:47 #6
Det virkede nogenlunde som det skulle. Skriver du et svar bojo? :)
Avatar billede bojo Nybegynder
20. oktober 2004 - 16:28 #7
naahh pyt, tag dem selv
Avatar billede nocs Nybegynder
20. oktober 2004 - 22:13 #8
Tak for det bojo ;)
Det jeg mente med spm. var at først skulle test udføres og derefter hvis der var et tekst hvor der stod www.test.dk skulle dette blive til link, også selvom der ikke stod [url][/url] udenom...
Fik det til at virke nogenlunde selv.
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

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