[PHP] Jak usunąć polskie znaki?

Niekiedy zdarza się sytuacja, gdy potrzebujemy z jakiegoś tekstu usunąć znaki diakrytyczne. Przydaje się to np. do generowania przyjaznych linków lub do innych celów, których wymaga dany projekt. W tym wpisie pokażę jak napisać prostą funkcję zamieniającą litery diakrytyczne na zwykłe litery alfabetu.

Mechanizm działania będzie bardzo prosty. Używając wbudowanych w PHP funkcji array_keys, array_values oraz str_replace będziemy podmieniać litery diakrytyczne na zwykłe litery bez ogonków. Przejdźmy zatem do rzeczy.

Tworzymy funkcję

<?php

function replace_diacritics($string)

{

 $characters = [];
 
 $characters['Ą'] = 'a';
 $characters['Ć'] = 'c';
 $characters['Ę'] = 'e';
 $characters['Ł'] = 'l';
 $characters['Ń'] = 'n';
 $characters['Ó'] = 'o';
 $characters['Ś'] = 's';
 $characters['Ż'] = 'z';
 $characters['Ź'] = 'z';
 $characters['ą'] = 'a';
 $characters['ć'] = 'c';
 $characters['ę'] = 'e';
 $characters['ł'] = 'l';
 $characters['ń'] = 'n';
 $characters['ó'] = 'o';
 $characters['ś'] = 's';
 $characters['ż'] = 'z';
 $characters['ź'] = 'z';
 
 $keys = array_keys($characters);
 $values = array_values($characters);
 
 return str_replace($keys, $values, $string);

}

Opis funkcji - tworzymy tablicę ze znakami alfabetu, gdzie kluczami są litery diakrytyczne, a wartościami zwykłe litery. Następnie tworzymy dwie zmienne keys i values, do których przypisujemy odpowiednio dla zmiennej keys klucze oraz dla zmiennej values wartości. Na końcu zwracamy rezultat funkcji str_replace, którą podmieniamy klucze na wartości.

Przykładowe użycie

<?php

echo replace_diacritics('Nie lubię poniedziałku'); // Wyświetli: "Nie lubie poniedzialku"

Komentarze

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[PHP] Jak pobrać adres strony?

[HTML] Jak wyśrodkować tekst?