Avatar billede foxwell Nybegynder
21. august 2004 - 00:51 Der er 9 kommentarer og
1 løsning

problemer med funktion der automatisk linker URL'er i en tekst

jeg har følgende to funktioner som finder URL'er i en tekst, og automatisk omdanner dem til et HTML link:

www.google.com
BLIVER TIL
<a href="www.google.com</a>" target="_blank">http://www.google.com">www.google.com</a>

mit problem er at det går helt galt hvis jeg fodrer funktionerne med en tekst der allerede indeholder en linket url:

<a href="www.google.com</a>" target="_blank">http://www.google.com">www.google.com</a>
BLIVER TIL
<a href="<a href="www.google.com</a>"" target="_blank">http://www.google.com">www.google.com</a>" <a href="<a href="www.google.com</a>">www.google.com<a/>target="_blank">www.google.com<a/>" target="_blank">http://www.google.com">www.google.com</a>">www.google.com<a/>target="_blank">www.google.com<a/>

Her er de 2 funktioner (jeg kalder kun den 2., således: formaText('tralala www.google.com tralala'); )

function url_parse($a, $b)
{
    $txt = $b;
    if(!strstr($b,'://'))
          $url = 'http://'.$b;
    else
          $url = $b;
    return $a.'<a href="'.$url.'" target="_blank">'.$txt.    '</a>';
}

function formaText($text)
{
    $text = preg_replace('#([^\w=/@\]]|^)((?:www\.[\w-]+\.[\w-]+?\S*?)|(?:[a-z]{3,6}://\S+?))(?=[^a-z0-9/]*?(?:[\s<\][]|(?:&(?:quot|lt|gt);)|$))#ie', 'url_parse("$1", "$2")', $text);

    return $text;
}

Jeg har ikke selv skrevet funktionerne, og er ikke ret god til Regular Expressions. Er der nogen der kan komme med forslag til hvordan jeg får funktionerne til at ignorere URL'er der allerede er linket? =)

mvh - foxwell
Avatar billede eagleeye Praktikant
21. august 2004 - 01:07 #1
Tag et kig på denne:
http://www.ljweb.com/usefulscripts/  download tagster_lib.php

Det er den som bruges på eksperten.
Avatar billede coderdk Praktikant
22. august 2004 - 02:00 #2
Skal folk bruge HTML som formattering, hvorfor have sådan en funktion, folk kan vel selv lave links? Hvis de ikke skal bruge HTML, hvorfor laver du så ikke noget i stil med:

$text = formatText( nl2br( htmlentities( strip_tags( $text ) ) ) );
Avatar billede coderdk Praktikant
18. december 2004 - 14:25 #3
Fungerer det?
Avatar billede foxwell Nybegynder
18. december 2004 - 14:34 #4
jeg brugte tagster - den havde også nogle småproblemer, men dem rettede jeg til og mener at den fungerer rimeligt godt nu =) Det var hovedsageligt angående andre tegn end whitespace i slutningen så vidt jeg husker, eller muligvis noget med URLs i starten af linier...
Avatar billede coderdk Praktikant
18. december 2004 - 14:36 #5
Ok, godt :)
Avatar billede foxwell Nybegynder
18. december 2004 - 14:37 #6
Jeg skulle bruge bruge funktionen til et interface til min blog - jeg blev træt af at skrive links i hånden, så de skulle kunne linke sig selv... problemet var bare at når jeg en gang imellem skulle skrive et link i hånden, f.eks. for at linke et ord i stedet for URLen selv, så gik det hele i koks...
Avatar billede coderdk Praktikant
18. december 2004 - 14:38 #7
hehehe ja den er set før :)
Avatar billede foxwell Nybegynder
18. december 2004 - 14:40 #8
coderdk - ellers tak for hjælpen, jeg har ikke været så god til at følge op på mine spørgsmål, men fik ryddet op i de fleste af mine udestående points forleden =) tak for hjælpen med det andede script forleden for resten, jeg har udviddet det lidt så den auto-submitter URLen med billedet når man paster, så man slipper for at skulle klikke på "submit" =)
Avatar billede coderdk Praktikant
18. december 2004 - 14:42 #9
np :) det er da rigtig det var dig ;)
jeg gik bare lige de spm igennem jeg deltog i for at se - hehe der er sq over 200 der ikke er lukkede ;)
Avatar billede foxwell Nybegynder
18. december 2004 - 14:44 #10
hehe =) så er jeg ikke den eneste der er "doven" på den måde. er dog ved at blive bedre til det =)
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