Vraag & Antwoord

Webprogrammeren & scripting

[PHP]magic urls en bbcode urls

Ik ben bezig voor mezelf een simpel kladblokje te maken, waarin ik aandachtspunten voor mezelf kwijt kan. Enerzijds zodat ik er dan altijd bij kan (het vervangt een beetje de mails die ik naar mezelf stuur), anderzijds omdat ik het leuk vind om van de grond af aan een compleet systeem te bouwen. De allereerste basics heb ik, en nu wil ik wat BBcode mogelijkheden gaan toevoegen. Ik had al een functie gemaakt om magic urls te maken, ofwel te zorgen dat als ik gewoon een adresregel oid copy-paste, dit netjes wordt omgezet naar een link met html-tags. Nu wil ik ook zorgen dat ik BBcode-links kan maken, dus met url-tags. Ik zit er alleen een beetje mee hoe ik kan zorgen dat als iets voorzien is van zulke url-tags, de magic-url niet wordt uitgevoerd (of andersom). Wat is daarin de beste aanpak? Voor het moment heb ik dit: [code:1:946c33595a]//magic urls $in=array('#((?:https?|ftp)://\S+[[:alnum:]]/?)#si', '#((?<!//)(www\.\S+[[:alnum:]]/?))#si' ); $out=array( '<a href="$1">$1</a>', '<a href="http://$1">$1</a>' ); if(!preg_match("#\[url(=|]$in)#si", $bericht) ){ $bericht = preg_replace($in,$out,$bericht); } [/code:1:946c33595a] Maar dat betekent dus dat als het bericht ook maar één url-tag bevat, er geen magic urls meer toegepast worden. Alternatief zou natuurlijk zijn om het voor iedere match van $in te controleren met behulp van een loopje, maar dat lijkt me niet heel erg efficient. Edit: opgelost met look-behind.