Kodowanie polskich znaków i ich przetwarzanie

0
function changeCode($word) {
    $letters = mb_convert_encoding("ąćęłńóśżź", "UTF-8");
        $changes = ["01","02","03","04","05","06","07","08","09"];
        $word = mb_convert_encoding($word, "UTF-8");
        $code = "";
        for ($i = 0; $i < 2; $i++) {
        if (($c = mb_strpos($letters, $word[$i])) !== false) {
            $code .= $changes[$c];
        } else {
            $code .= $word[$i];
        }
    }
    
    return $code;
}

Mam taką funkcję. Chciałbym, by gdy przekażę do niej wyraz "żaba", zwróciła tekst "08a", a zwraca "0409". Ma kto pomysł jak to rozsupłać? 😀 Dzięki!

2

Działa to?

function changeCode($word) {
    // Define Polish characters and their corresponding codes
    $letters = "ąćęłńóśżź";
    $changes = ["01","02","03","04","05","06","07","08","09"];
    
    // Ensure the input word is in UTF-8
    $word = mb_convert_encoding($word, "UTF-8");
    
    // Initialize an empty string for the resulting code
    $code = "";
    
    // Loop through each character in the input word
    for ($i = 0; $i < mb_strlen($word); $i++) {
        // Get the current character
        $char = mb_substr($word, $i, 1);
        
        // Check if the character is in the list of Polish characters
        if (($c = mb_strpos($letters, $char)) !== false) {
            // If found, append the corresponding code
            $code .= $changes[$c];
        } else {
            // If not found, append the original character
            $code .= $char;
        }
    }
    
    return $code;
}

echo changeCode("żaba"); // Output: 08aba

?

0

Tak, dzięki! GPT? 😄

3

Oczywiście, do prostych rzeczy działa, do bardziej skomplikowanych generuje błędne odpowiedzi :D

1

ale mam nadzieję że to nie jest kod prawdziwej aplikacji, nie wymyślaj własnej dziwnej obsługi znaków. Po pierwsze to czasy że coś nie obsługuje utf-8 dawno minęły więc nie powinieneś w ogóle się tym martwić, ale jeśli jednak masz jakiś przypadek że musisz upchać utf-8 np w bazie która jest w innym kodowaniu to przekonwertuj to zwyczajnie do bajtów i z powrotem. Przykładowo w tym czymś wyżej jak zakodujesz jak ktoś faktycznie będzie chciał wpisać "08aba"?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.