Det verkar fungera i alla fall, men ditt problem var att du ville byta ut ett hexvärde som passar en ISO-8859 i en utf-8 sträng, och den finns ju inte där.
jag skulle starkt rekommendera att utgå från utf8 , eventuellt kontrollera ditt indata så att det säkert är i rätt kodning, och sen kan du i lugn och ro byta vilka tecken du vill.
Ett sätt att kontrollera vilken kodning strängen är med mb_detect_encoding()
Typ så här:
Kod:
$string= 'åäö';
$string_iso = *mb_convert_encoding($string,'ISO-8859-1',auto);
echo mb_detect_encoding($string,'UTF8,ISO-8859-1').' '.urlify($string).'<br>';
echo mb_detect_encoding($string_iso,'UTF8,ISO-8859-1').' '.urlify($string_iso).'<br>';
function urlify($str) {
* * * $str=preg_replace('/\xE5/','a',$str); *
* * * return $str;
}
Utdata:
Som du ser så fungerar din regexp helt ok så länge du matar den med ISO. Men om du har UTF8 i strängen från början så ska du inte ändra utan utgå från den kodning du har.