Avatar billede kongfjong Nybegynder
31. maj 2006 - 20:56 Der er 4 kommentarer og
1 løsning

Hvordan undgår jeg punktum i links?

Hej, jeg sidder og roder med en tagster til links for 117. gang. Jeg er kommet så langt:

$text = preg_replace('/(((((ftp|http|https|telnet|news|nntp|file|irc):\/\/)|www.)([^\\s]+))(\\.?))/i', '<a href="http://$6" target="_blank">$2</a>$9', $text);

Mit problem er nu, at den ikke kan sikre, at et link der er skrevet i slutningen af en sætning, ikke skal indeholde det punktum der naturligvis afslutter sætningen. Hvordan undgår jeg det?

Derudover har jeg denne tagster der tjekker for links til billeder af et givent format:

$text = preg_replace('/((((ftp|http|https|telnet|news|nntp|file|irc):\/\/)|www.)([^\\s]+\\.(png|jpg|jpeg|gif)))/i', '<a href="http://$5" target="_blank"><img src="http://$5" width="300" height="175"></a>', $text);

Den er holdbar i sig selv, men når jeg bruger den sammen med den første tagster, før eller efter, fucker den op:) hvordan får jeg den første tagster til at tjekke for, at linket ikke slutter på samme endelse som den anden tagster tjekker for at den SKAL ende på?
Avatar billede jakobdo Ekspert
31. maj 2006 - 21:41 #1
Jeg har en tagster, og den laver også . med i linket.
Måske du kunne lave et hack til din url tagster, ala:
$url = "http://www.eksperten.dk/.";
$url = rtrim($url,".");
Avatar billede kongfjong Nybegynder
31. maj 2006 - 21:54 #2
Ah ja det kunne man self:)

Hvad med det der med endelserne på billedlinks?
Avatar billede jakobdo Ekspert
31. maj 2006 - 21:59 #3
Den kan jeg ikke lige greje nu.
Måske du kan lave det i en if eller sætning, så du først tjekker om det er billede links, og hvis ikke, så tjekker du det andet.
(men ved ikke om det er muligt lige nu)
Avatar billede kongfjong Nybegynder
01. juni 2006 - 08:52 #4
Nu forsøgte jeg følgende:

function convert_text ($text) {

    $string_array = explode(" ", $text); // Deler $text i et array for hvert mellemrum i teksten.
   
    $match_array = preg_grep("((ftp|http|https|telnet|news|nntp|file|irc):\/\/[^\\s]+)", $string_array); //Søger på "pattern" i $string_array. Alle fundne "matches" smides ind i $match_array.
    $match_array = array_values($match_array); //Sætter indexværdier i $match_array til "normal" værdi.
   
    $array_size = count($match_array); //Antallet af "entries" i $match_array.
    $counter = 0;
   
    if ($array_size > 0) //Tester om $array_size indeholder værdier.
    {
        while ($counter < $array_size) //Kører så længe $counter er mindre end $array_size.
        {
            if (preg_match("(((ftp|http|https|telnet|news|nntp|file|irc):\/\/[^\\s]+\\.(png|jpg|jpeg|gif))/i)", $match_array[$counter]))
            {
                $replacement_text = "<a href=\"$match_array[$counter]\" target=\"_blank\"><img src=\"http://$match_array[$counter]\" width=\"300\" height=\"175\"></a>";
                $text = str_replace($match_array[$counter], $replacement_text, $text);
            }
            else
            {
                $match_array[$counter] = rtrim($match_array[$counter], '.');
                $replacement_text = "<a href=\"$match_array[$counter]\" target=\"_blank\">$match_array[$counter]</a>";
                $text = str_replace($match_array[$counter], $replacement_text, $text);
            }
           
            $counter++;
        }
    }

    return $text;
}

print convert_text("[fr]Tekst[/f] http://www.fmground.dk. http://www.fmground.dk. Lidt sære tegn: &%¤#[ http://www.martinhjort.net/fmg/Darwen/MarkSherlock.PNG http://www.martinhjort.net/fmg/Darwen/MarkSherlock.PNGæ");
===================================
Problemet er så at outputtet i kildekode ser således ud:

[fr]Tekst[/f] <a href="<a href="http://www.fmground.dk target="_blank">http://www.fmground.dk</a>" target="_blank"><a href="http://www.fmground.dk" target="_blank">http://www.fmground.dk</a></a>. <a href="<a href="http://www.fmground.dk target="_blank">http://www.fmground.dk</a>" target="_blank"><a href="http://www.fmground.dk" target="_blank">http://www.fmground.dk</a></a>. Lidt sære tegn: &%¤#[ <a href="http://www.martinhjort.net/fmg/Darwen/MarkSherlock.PNG" target="_blank">http://www.martinhjort.net/fmg/Darwen/MarkSherlock.PNG</a> <a href="http://www.martinhjort.net/fmg/Darwen/MarkSherlock.PNG" target="_blank">http://www.martinhjort.net/fmg/Darwen/MarkSherlock.PNG</a>æ
===========================
Den gør altså for det første ikke billedlinks til klikbare billeder, samtidigt med, at den åbenbart laver de almindelige links dobbelt...
Avatar billede kongfjong Nybegynder
28. juni 2006 - 14:22 #5
Lukker...
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