Avatar billede Slettet bruger
15. juni 2008 - 21:30 Der er 15 kommentarer og
1 løsning

Omdan tekst linie til link

Hej.

Jeg har fundet denne linie her på experten.dk og forsøgt at putte den ind i min kode. Den laver også om til det den skal (tror jeg nok), men det fremstår ikke som et link når teksten fra databasen vises, Mangler der et eller andet ?

Her er den linie jeg har fundet:

echo preg_replace( "/((http|ftp)+(s)?:\/\/[^<>\s]+)/i", "<a href=\"\\0\">\\0</a>", $str );

og her er det jeg har lavet den om til:

echo preg_replace( "/((http|ftp)+(s)?:\/\/[^<>\s]+)/i", "<a href=\"\\0\">\\0</a>",  $row_VisListen['Indhold']);

Den laver godtnok om så min linie starter med <a href=" og så videre

men det bliver ikke et link man kan klikke på.

Hvordan får jeg den til det ?

På forhånd tak.

Ole.
Avatar billede jakobdo Ekspert
15. juni 2008 - 21:41 #1
Jeg har testet din regexp og den skulle virke fint nok.
Jeg har dog forsøgt at rette den en lille bitte smule:

echo preg_replace('%((http|ftp)+(s)?://[^<>\s]+)%i', '<a href="$1">$1</a>', $row_VisListen['Indhold']);
Avatar billede Slettet bruger
15. juni 2008 - 21:47 #2
Dit forsøg giver det samme. Det bliver til:

<a href="http://www.filext.com/">http://www.filext.com/</a>

men det er ikke til at klikke på. Jeg synes det ser ud til at ligne det man taster ind i en fil og så bliver det et klikbart link, men ikke her.

Teksten hentes fra longtext i en MySQL database, men det synes jeg heller ikke plejer at være et problem. Men jeg kan dæleme ikke få den til at makke ret :-) Kan du ?
Avatar billede jakobdo Ekspert
15. juni 2008 - 22:02 #3
Men det link du skriver herover, det er da korrekt. Eller hvad ?
Det ligner da et korrekt link ihf.
Avatar billede Slettet bruger
15. juni 2008 - 22:07 #4
Ja det ligner et rigtigt link, men det virker ikke på den side hvor det vises, og det er det jeg søger en løsning på. Det vises tilsyneladende som tekst, og ikke som et link som forventet.

Det er det jeg ikke kan få den til, altså at lave det som link. Experten.dk laver det jo som link som jeg lagde ind herover, men det er kun den første ef de to link den laver, der virker som det skal.

Giver det en idé til hvad der kan være galt ?
Avatar billede jakobdo Ekspert
15. juni 2008 - 22:17 #5
Kan det ikke skyldes du bruger: htmlentities, så < bliver skrevet som: &lt; og > som: &gt;
Avatar billede Slettet bruger
15. juni 2008 - 22:21 #6
Jeg bruger kun det jeg har skrevet, også da jeg prøvede dit forsøg. Men hvis du ser på denne:

<a href="http://www.filext.com/">http://www.filext.com/</a>

så har den </a> med som link længere oppe, og det kommer nok også her. Det kunne jo tyde på et problem. Jeg kan ikke se hvor jeg skulle bruge htmlentities ?
Avatar billede Slettet bruger
15. juni 2008 - 22:23 #7
Den skriver teksten som beskrevet, og ikke med &lt; og så videre, så det er ikke der. Den skriver bare det som skulle være et link som en tekst. Utroligt som det kan drille :-)
Avatar billede jakobdo Ekspert
15. juni 2008 - 22:24 #8
Du skal kigge i den kode som indsætter data i din database.
Der står garanteret html_entities eller htmlspecialchars
Avatar billede jakobdo Ekspert
15. juni 2008 - 22:25 #9
Kan du ikke kontakte mig på msn: jakobdo {at] hotmail [dot} com
Avatar billede Slettet bruger
15. juni 2008 - 22:28 #10
ok har forsøgt at skrive til dig. Måske skal man invitere først ? :-)
Avatar billede jakobdo Ekspert
15. juni 2008 - 22:30 #11
Hvad hedder du på msn ?
Avatar billede Slettet bruger
15. juni 2008 - 23:04 #12
Nå, det lykkedes da at finde hinanden. Dit løsningsforslag med <div> løste linkproblemet, men gav så problem med, at den ikke skifter linie hvor den skal.

Men det er jo snorketid, så det kan vi vende tilbage til.
Avatar billede jakobdo Ekspert
16. juni 2008 - 05:50 #13
Problemet var som følger:
Teksten blev vist i et textarea, hvorfor <a href="noget">noget</a> selvfølgelig ikke blev klikbart.
Vi rettede så textarea til: <div style="width:XXXpx; height:XXXpx; overflow:auto;">TEXT</div>

Hvis du nu smider teksten ind i div, med følgende kommando:

nl2br(preg_replace('%((http|ftp)+(s)?://[^<>\s]+)%i', '<a href="$1">$1</a>', $row_VisListen['Indhold']));

Så burde der også være newlines i din DIV.
Avatar billede jakobdo Ekspert
16. juni 2008 - 05:50 #14
Og du får et svar.
Avatar billede Slettet bruger
16. juni 2008 - 07:58 #15
Jamen jeg fik det til at virke, så det er tilsyneladende helt på toppen :-)

TAK for hjælpen.
Avatar billede jakobdo Ekspert
16. juni 2008 - 08:16 #16
Det var så lidt og 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