Ett problem som kan vara svårt att hitta är hantering av strtolower och encoding. Under en tid har jag jobbat med ett projekt som till viss del ligger på en Windows-plattform vi har begränsad kontroll över. Ibland blir det problem när man ska göra jämörelser av textsträngar och vill använda strtolower. Eftersom ”Mattias” inte är samma sak som ”mattias” vill man se till att båda värden man jämför bara innehåller gemener (eller versaler). Men strtolower() vill inte lira med å,ä,ö etc i UTF-8.
En lösning på problemet kan vara att ändra tecken till något annat – varför inte htmlentities(). Så här kan det se ut att förvandla ett värde till gemener och komma runt encoding problem:
1 2 3 | $value = htmlentities($value, ENT_COMPAT, 'UTF-8'); $value = trim(strtolower($value)); $value = html_entity_decode($value, ENT_COMPAT, 'UTF-8'); |
En annan lösning är mb_strtolower() om den funktionen finns tillgänlig.
