Avatar billede radion Nybegynder
18. marts 2007 - 22:12 Der er 5 kommentarer og
1 løsning

preg_match spørgsmål

hej eksperter

jeg har en pregmatch:
    $txt=preg_replace("/\[link:http:\/\/(.*)](.*)\[\/link]/i","<a target=\"_blank\" href=\"http://$1\">$2</a>",$txt);

der skal finde links af typen

her er tekst og du [link:http://www.hotmail.com]kan gå til hotmail[/link] og andre fine links

og ændre det til et klikbart link.. det fungerer også efter planen

men, hvis jeg fx skriver

her er tekst og du [link:http://www.hotmail.com]kan gå til hotmail[/link] og andre fine [link:http://www.newz.dk]links[/link]

så bliver outputtet:

her er tekst og du <a target="_blank" href="http://www.hotmail.com]kan g&aring; til hotmail[/link] og andre fine [link:http://www.newz.dk">links</a>

dvs. linket bliver nu til "http://www.hotmail.com]kan g&aring; til hotmail[/link] og andre fine [link:http://www.newz.dk"
og det er jo helt galt..

hvad skal laves om?
Avatar billede erikjacobsen Ekspert
18. marts 2007 - 22:42 #1
$txt=preg_replace("/\[link:http:\/\/(.*)](.*?)\[\/link]/i","<a target=\"_blank\" href=\"http://$1\">$2</a>",$txt);
Avatar billede erikjacobsen Ekspert
18. marts 2007 - 22:43 #2
Hmm, faktisk nok (men begge utestede), men prøv den her først:
$txt=preg_replace("/\[link:http:\/\/(.*?)](.*?)\[\/link]/i","<a target=\"_blank\" href=\"http://$1\">$2</a>",$txt);
Avatar billede radion Nybegynder
18. marts 2007 - 22:54 #3
tusind tak

2'eren virkede :D hvad gør det ekstra (.*?) i forhold til (.*)

kast et svar, hvis du vil have points :)
Avatar billede erikjacobsen Ekspert
18. marts 2007 - 23:04 #4
Nej tak, ingen point til mig. Samler ikke.

Pr. default er et regulært udtryk grådigt - tænk på Obelix og 10 stegte vildsvin. Han guffer dem alle i sig. Et regulært udtryk vil normalt kigge efter den længst mulige match. Derfor vil din første [link...] matche med den sidste [/link] (groft sagt)

En ? efter *-en gør udtrykket ikke-grådigt. Nu vil den kigge efter den første match.

Så spørgsmålet er egentlig hvordan man får Obelix til at nøjes med eet vildsvin...hmmm...;)
Avatar billede erikjacobsen Ekspert
18. marts 2007 - 23:04 #5
Avatar billede radion Nybegynder
18. marts 2007 - 23:08 #6
fantastisk, mange tak, glimrende beskrivelse, og tak for link :)
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