Hallo,
ik ben nou al een paar uur bezig met het maken van een regex die Wikipedia-links maakt. Bijvoorbeeld [[Tweakers.net]] moet een link worden naar http://en.wikipedia.org/wiki/Tweakers.net
Dat werkt prima:
[[Tweakers.net|Tweakers]] moet dezelfde link geven. Ook dat werkt prima:
Nou wil ik ook meerdere links in 1 regel vervangen. Als dit in de vorm [[foo]] [[bar]] of [[foo|bar]] [[foo2]] is wil dat prima, maar bij [[foo]] [[foo2|bar]] gaat mijn regex de mist in.
Ik dacht eerst dat het een kwestie was van lazy/greedy omwisselen. Nee dus, dus toen ben ik verder dingen gaan proberen waarvan ik dacht dat het zou helpen: i.p.v. (.+?) heb ik ([\w^|]+?) geprobeerd, maar dan pakt hij alle links met een | helemaal niet meer.
Zie ik iets over het hoofd? Kan ik dit misschien beter anders oplossen?
Wie kan mij verder helpen?
ik ben nou al een paar uur bezig met het maken van een regex die Wikipedia-links maakt. Bijvoorbeeld [[Tweakers.net]] moet een link worden naar http://en.wikipedia.org/wiki/Tweakers.net
Dat werkt prima:
PHP:
1
| $tekst = preg_replace("#\[\[(.+?)\|(.+?)\]\]#is","<a href=\"http://en.wikipedia.org/wiki/\\1\">\\2</a>",$tekst); |
[[Tweakers.net|Tweakers]] moet dezelfde link geven. Ook dat werkt prima:
PHP:
1
| $tekst = preg_replace("#\[\[(.+?)\|(.+?)\]\]#is","<a href=\"http://en.wikipedia.org/wiki/\\1\">\\2</a>",$tekst); |
Nou wil ik ook meerdere links in 1 regel vervangen. Als dit in de vorm [[foo]] [[bar]] of [[foo|bar]] [[foo2]] is wil dat prima, maar bij [[foo]] [[foo2|bar]] gaat mijn regex de mist in.
Ik dacht eerst dat het een kwestie was van lazy/greedy omwisselen. Nee dus, dus toen ben ik verder dingen gaan proberen waarvan ik dacht dat het zou helpen: i.p.v. (.+?) heb ik ([\w^|]+?) geprobeerd, maar dan pakt hij alle links met een | helemaal niet meer.
Zie ik iets over het hoofd? Kan ik dit misschien beter anders oplossen?
Wie kan mij verder helpen?
Full-stack webdeveloper in Groningen