PURL Plugin: Problemer med ÆØÅ i Regex (PHP)
Hej Eksperter,Jeg har siddet og døjet med et lille simpelt PURL plugin til WordPress siden morgenstunden, og må nu give op. Jeg har haft min kammerat ind over også og vi er begge løbet tør for idéer.
Problem:
Fungerer korrekt: http://www.domain.dk/Jens.Hansen
Returnerer: Jens og Hansen
Fungerer korrekt: http://www.domain.dk/Jørgen.Jørgensen
Returnerer: Jøren og Jørgensen
Fejler: http://www.domain.dk/Jens.Jørgensen
Returnerer: Jens og J
Såfremt efternavnet indeholder æøå og fornavnet også gør, så fungerer systemet fint. Så snart fornavnet ikke indeholder æøå alt i mens efternavnet gør - så breaker den ved det problematiske tegn. Vi har forsøgt alt i vores magt, og vi kan ikke finde en løsning.
Funktionalitet:
PURL Pluginnet skal fungerer således at når Jens Hansen træder ind på http://www.domain.dk/Jens.Hansen
Så vil han se sit navn på siden "Velkommen Jens Hansen".
Tankegangen bag:
Det skal være så simpelt som muligt, derfor bliver navnet Jens Hansen sat ind i content via WordPress' shortcodes, for at brugeren kan ændre sammenhængen.
Pluginnet:
Først flusher vi wordpress' rewrite rules.
Dernæst tilføjer vi et filter på Wordpress' query_vars, således at vi kan fange vores variabel i URL'en "Jens.Hansen".
Dernæst tjekker vi på om query_vars returnerer vores variabel, altså om variablen er fanget.
Da vi valgte at splitte regex'en op i 2 capturing groups, tjekker vi på både purlfornavn og purlefternavn. Dette gjorde vi efter at have prøvet alt vi kunne komme i tanke om med 1 capturing group. For at løse vores problem.
Hvis query_vars returnerede vores variabler, gemmer vi dem i 2 sessions.
Oven i det har vi vores rewrite rules, hvori vores Regex ligger. Den ser pt. således ud:
$new_rules = array(
'([a-zA-Zæøå]+)[\.]{1}([a-zA-Zæøå]+)' => 'index.php?p=' . get_option('page_on_front') . '&purlfornavn=' .
$wp_rewrite->preg_index(1) . '&purlefternavn=' . $wp_rewrite->preg_index(2)
Vi har lokaliseret problemet hertil - vi mener i hvertfald at regexen er problem, da vi tidligere testede (under 1 capturing group) med:
http://www.domain.dk/index.php?p=53&navn=Jens+Jørgensen
fik returneret: Jens Jørgensen uden problemer.
Håber der er nogle der har en løsning, for vi er helt flade for muligheder.
På forhånd mange tak,
Michael