Bag om Sliknavn - produktionsnoter
Forleden kodede jeg dimsen, der finder dit sliknavn.
Det foregik i sofaen, mens jeg så et afsnit af Unge Mødre i fjerneren, og i aftes pudsede jeg den lidt af.
Ideen kom, fordi jeg ved et tilfælde fandt ud af, at hvis man skriver en ulovlig url på slikleksikon, så spørger den, om man mente noget andet. Eks: slikleksikon.org/julemanden.
Udskift ‘julemanden’ i eksemplet ovenfor med dit eget navn, så kan du se hvad jeg mener.
Nu bliver det teknisk, så læs kun videre, hvis du er middelsvært til stærkt nørdet.
Jeg ville egentlig have lavet det som en javascript-only dims, der kun eksisterer i selve blogindlægget, da det er interessant at lege med grænserne for hvad et blogindlæg kan være. Men da javascript ikke kan læse urler på andre domæner, måtte jeg lave en stump php, gør det hårde arbejde (sliknavn.php), og så kan man kalde sin php med noget asynkront javascript (sliknavn.js).
Problemet er nu at få det regulære udtryk i phps preg_match til at fange æøå, hvilket jeg ikke kan finde ud af. Så hvis der er ÆØÅ i det foreslåede sliknavn, får man “ikke noget sliknavn” fejlen, hvilket selvfølgelig er en løgnagtig eufemisme for “jeg kan ikke kode”. Er du en djævelsk php-hacker, kan du måske løse problemet for mig?
Update
Så er der action på æøå. Regex rettet og efterfølgende urlencoding interop problem mellem php og javascript løst med denne snippet. Pastie-links ovenfor er opdaterede, hvis det interesserer nogen. View source på siden, hvis du vil se, hvordan ajaxen er blandet.
17. May 2007 kl. 16:02
Angående dit PHP-problem, så specificerer man æøå direkte i sit regulære udtryk. Eksempelvis [a-zæøå]. Uden at kende dit regulære udtryk, så burde dette kunne løse problemet.
17. May 2007 kl. 16:16
Jonathan, det løser ikke problemet — når den tekst man grepper er i UTF8, løber man ind i problemer. ÆØÅ er prøvet. Der er en multibyte variant af regexp funktionerne i php, som jeg ikke har haft held med at få til at virke.
19. May 2007 kl. 00:16
Slikleksikonnet er da ISO-8859-1?
Du skulle prøve utf8_decode(), den virker fremragende, nogle gange lidt for godt, men så brug denne:
function decodeuft8($str){
$matches = array(”¡”,”¢”,”£”,”¤”,”Â¥”,”¦”,”§”,”¨”,”©”,”ª”,”«”,”¬”,””,”®”,”¯”,”°”,”±”,”²”,”³”,”´”,”µ”,”?”,”¶”,”•”,”¸”,”¹”,”º”,”»”,”¼”,”½”,”¾”,”¿”,”À”,”Ã?”,””,”Ô,”Ä”,”Ã…”,”Æ”,”Ç”,”È”,”É”,”Ê”,”Ë”,”ÃŒ”,”Ã?”,”ÃŽ”,”Ã?”,”Ã?”,”Ñ”,”Ã’”,”Ó”,”Ô”,”Õ”,”Ö”,”×”,”Ø”,”Ù”,”Ú”,”Û”,”Ü”,”Ã?”,”Þ”,”ß”,”à “,”À”,”á”,”Ã?”,”â”,””,”ã”,”Ô,”ä”,”Ä”,”Ã¥”,”Ã…”,”æ”,”Æ”,”ç”,”Ç”,”è”,”È”,”é”,”É”,”ê”,”Ê”,”ë”,”Ë”,”ì”,”ÃŒ”,”Ô,”Ã?”,”î”,”ÃŽ”,”ï”,”Ã?”,”ð”,”Ã?”,”ñ”,”Ñ”,”ò”,”Ã’”,”ó”,”Ó”,”ô”,”Ô”,”õ”,”Õ”,”ö”,”Ö”,”÷”,”ø”,”Ø”,”ù”,”Ù”,”ú”,”Ú”,”û”,”Û”,”ü”,”Ü”,”ý”,”Ã?”,”þ”,”Þ”,”ÿ”,”?”,”ÂŒ”,”œ”,”Š”,”š”,”Ÿ”,”ÂŽ”,”ž”,”ƒ”,”ˆ”,”˜”);
$replaces = array(”¡”,”¢”,”£”,”¤”,”¥”,”¦”,”§”,”¨”,”©”,”ª”,”«”,”¬”,””,”®”,”¯”,”°”,”±”,”²”,”³”,”´”,”µ”,”?”,”¶”,”•”,”¸”,”¹”,”º”,”»”,”¼”,”½”,”¾”,”¿”,”À”,”Á”,””,”Ô,”Ä”,”Å”,”Æ”,”Ç”,”È”,”É”,”Ê”,”Ë”,”Ì”,”Í”,”Δ,”Ï”,”Д,”Ñ”,”Ò”,”Ó”,”Ô”,”Õ”,”Ö”,”×”,”Ø”,”Ù”,”Ú”,”Û”,”Ü”,”Ý”,”Þ”,”ß”,”à”,”À”,”á”,”Á”,”â”,””,”ã”,”Ô,”ä”,”Ä”,”å”,”Å”,”æ”,”Æ”,”ç”,”Ç”,”è”,”È”,”é”,”É”,”ê”,”Ê”,”ë”,”Ë”,”ì”,”Ì”,”í”,”Í”,”î”,”Δ,”ï”,”Ï”,”ð”,”Д,”ñ”,”Ñ”,”ò”,”Ò”,”ó”,”Ó”,”ô”,”Ô”,”õ”,”Õ”,”ö”,”Ö”,”÷”,”ø”,”Ø”,”ù”,”Ù”,”ú”,”Ú”,”û”,”Û”,”ü”,”Ü”,”ý”,”Ý”,”þ”,”Þ”,”ÿ”,”?”,”Œ”,”œ”,”Š”,”š”,”Ÿ”,”Ž”,”ž”,”ƒ”,”ˆ”,”˜”);
return str_replace($matches, $replaces, $str);
}
19. May 2007 kl. 00:44
Hum. encoding fehler fra min side. Ved ikke lige, hvor den svipsede..
Fin funktion :-) Men ih hvor ville det være skønt, hvis alle bare brugte den samme encoding.