Avatar billede roz Nybegynder
16. august 2007 - 23:33 Der er 7 kommentarer og
1 løsning

While løkke problem fortsat

Hey har lavet følgende funktion:
function Forum_Linkfix($t)
{
$tekst = $t;
while (strpos($tekst, " http://www"))
{
$forekomst = strpos($tekst, " http://");
$forekomst_slut = strpos($tekst, " ", $forekomst+1);
$tekst_st = substr($tekst, 0, $forekomst+1);
$link = substr($tekst, $forekomst+1, $forekomst_slut);
$link_tekst = substr($tekst, $forekomst+8, $forekomst_slut);
$link = "<a href=\"$link\" target=\"_blank\">$link_tekst</a>";
$tekst_sl = substr($tekst, $forekomst_slut, strlen($tekst)-$forekomst);
$tekst = $tekst_st. " " .$link.$tekst_sl;
}
return $tekst;
}

Har siddet og bøvlet med den noget tid nu og muligvis stirret mig blind på den.. Men den bliver ved med at køre :S Så ville lige høre om der er andre der kan finde fejlen.

Hvis så er der 200 point for det :)

På forhånd tak!
Avatar billede erikjacobsen Ekspert
16. august 2007 - 23:38 #1
Så du erstatter  'http://www'  med "< href="http://www" ...>' ?  Så bliver der jo ved med at stå 'http://www' i strengen, og så bliver den ved. Hvorfor viste du ikke bare hele koden i det andet spørgsmål?
Avatar billede barklund Nybegynder
16. august 2007 - 23:44 #2
Nu søger funktionen jo efter " http://" og sørger for at fjerne først " " inden teksten inden erstatning - så det "burde" virke.

Men hvorfor overhovedet manuelt lave det? Hvorfor ikke gøre det i en linje med et simpelt regulært udtryk?

--
Barklund
Avatar billede roz Nybegynder
16. august 2007 - 23:47 #3
erikjacobsen - Fordi dengang var det kun while løkken der var problemet.. Og fik det itl at virke - men på en eller anden måde fik jeg det ødelagt igen hehe :P

barklund - Har overvejet det men kan ikke lige kommet på hvordan man skulle gøre det.. Tænker du str_replace eller noget i den stil eller? Ville være en god ting hvis det kunne løses på den måde :)
Avatar billede erikjacobsen Ekspert
16. august 2007 - 23:54 #4
Ja, upræcist fra mig, men der bliver jo ved med at stå " http://" i strengen, hvert fald i nogle tilfælde. Ellers ville den jo faktisk ikke blive ved.
Avatar billede barklund Nybegynder
16. august 2007 - 23:59 #5
roz, nej med et regulært udtryk via preg_replace:

$tekst = preg_replace("¤http://(\S*)¤i", "<a href=\"\\0\">\\1</a>", $tekst);

Den burde gøre nogenlunde det hele - og er en pæn del nemmere at overskue :)
Avatar billede erikjacobsen Ekspert
17. august 2007 - 00:12 #6
Og mon ikke det er den her, der regner forkert, hvis der er flere links i en streng:
  $tekst_sl = substr($tekst, $forekomst_slut, strlen($tekst)-$forekomst);
Et regulært udtryk er generelt en bedre idé - det er bare svært at ramme præcist.
Avatar billede roz Nybegynder
20. august 2007 - 20:57 #7
Super barklund - smid et svar så får du point :)

Også tak til dig erik :)
Avatar billede roz Nybegynder
28. april 2011 - 14:24 #8
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