Vraag & Antwoord

Webprogrammeren & scripting

alle URL's klikbaar maken

Anoniem
daano
2 antwoorden
  • Ik zoek een mogelijkheid om alle URL's die in een een php gastenboek geplaatst worden klikbaar te maken. Nu gebruik ik: [code:1:e881e5851d]$message = preg_replace('`(?<!<a href=")((http)+(s)?:(//)|(www\.))((\w|\.|\-|\_)+)(/)?(\s|$|<)`i', '<a href="http\\3://\\5\\6\\8" target="_blank">\\5\\6</a>\9', $message);
    [/code:1:e881e5851d]

    Maar deze maakt niet elke url klikbaar. Bijv wel www.daanooms.nl, maar niet www.daanooms.nl/index.htm

    Ik heb er een nodig die alles wat op een url lijkt klikbaar maakt bijv als ik uit de adresbalk: http://www.phpbb.nl/posting.php?mode=reply&t=20969&sid=9c972556da759c93775a335562dbbb5a kopieer dan moet deze klikbaar tussen de messages verschijnen.

    Heeft iemand een idee? EDIT: zoals hier.
  • alles wordt lastig, maar je kunt een heel eind komen. Ik zal je degene geven die ik gebruik. Hij is niet volmaakt en vast niet goed geoptimaliseerd.. maar goed, hij werkt vaak genoeg voor mij. Ik heb er ook mijn emailadres regexp bijgedaan, gestoeld op dezelfde principes.


    [code:1:87098aaa4e]preg_replace("/(^|\b|\s|>[^=])?(http:\/\/|(www[0-9]?\.|ftp\.))([^\b <,!]*[^.!?\s])(\b|$)/i","$1<a href=\"http://$3$4\">$2$4</a>$5", $s);[/code:1:87098aaa4e]
    [code:1:87098aaa4e]preg_replace("/(^|\b|\s|>)([a-z1-9_\.]*)\@([a-z1-9_\.]*)\.([a-z1-9_]*)(\.([a-z1-9_]*))?([^\b <]*)/i","\\1<a href=\"mailto:\\2@\\3.\\4\\5\">\\2@\\3.\\4\\5</a>\\7",$s);[/code:1:87098aaa4e]

    Overigens is de enige echt complete emailparser die ik ken deze (ga er maar voor zitten ;):

    http://examples.oreilly.com/regex/email-opt.txt . Het genoemde boek is het enige echte goede boek dat je ooit nodig zult hebben voor regexps - Mastering Regular Expressions van Jeffrey Friedl, machtig interessant en ook nog leuk om te lezen.

    PS als ik me niet vergis is bovenstaande url-parser zelfs nog iets beter dan die PHPBB gebruikt, aangezien ik hier het laatste puntje van die link moet scheiden, omdat die anders wordt meegenomen.. muhahaha

    PS2 ik heb er nog een beetje mee zitten spelen, dus wel even goed testen en niet klakkeloos gebruiken.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.