Obecnie próbuję usunąć wszystkie znaki specjalne i akcenty z ciągu znaków UTF-8, zamieniając je w ich równoważny znak ASCII, jeśli to możliwe.Dlaczego ikonki PHP potrzebują setlocale?
Więc jestem po prostu za pomocą tego kodu:
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
Problemem jest to, że na przykład słowo „debiut” zamienia się w „dbut” zamiast „debiut”. Aby działać, muszę dodać wywołanie do setlocale, tak:
setlocale(LC_ALL, 'en_US.UTF8');
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
A ja nie rozumiem dlaczego. Myślałem, że UTF-8 i ASCII są zawsze takie same, niezależnie od tego, z jakiego regionu korzystasz.
EDIT: Nie chciałem UTF-8 jest równa ASCII, chciałem UTF-8 zawsze równa UTF-8 i ASCII zawsze równa ASCII
ASCII i UTF-8 nie są takie same. UTF-8 jest większy o rząd wielkości. – NikiC