usuwanie polskich znaków diakrytycznych php
Często zachodzi potrzeba zastąpienia polskich znaków diakrytycznych takich jak:
ą, ć, ę, ł, ń, ó, ś, ź, ż, Ą, Ć, Ę, Ł, Ń, Ó, Ś, Ź, Ż ich odpowiednikami bez ogonków (graficzne odpowiedniki):
a, c, e, l, n, o, s, z, z, A, C, E, L, N, O, S, Z, Zposłuży nad do tego prosta funkcja
remove_pl która jest niezależna od kodowania i udostępnia usuwanie polskich znaków z tablic jak i stringów. Usuwa także polskie znaki z kluczy tablicy jak i wartości. Może usuwać polskie znaki z trzech kodowań:
- UTF-8 (utf8)
- ISO-8859-2 (latin2)
- Windows-1250 (cp1250 )
a oto ta funkcja:
function remove_pl($text,$from) {
//remove_pl by tosiek - https://tosiek.pl/
if($from == 'utf8') {
$from = array(
"\xc4\x85", "\xc4\x87", "\xc4\x99",
"\xc5\x82", "\xc5\x84", "\xc3\xb3",
"\xc5\x9b", "\xc5\xba", "\xc5\xbc",
"\xc4\x84", "\xc4\x86", "\xc4\x98",
"\xc5\x81", "\xc5\x83", "\xc3\x93",
"\xc5\x9a", "\xc5\xb9", "\xc5\xbb",
);
}elseif($from == 'latin2') {
$from = array(
"\xb1", "\xe6", "\xea",
"\xb3", "\xf1", "\xf3",
"\xb6", "\xbc", "\xbf",
"\xa1", "\xc6", "\xca",
"\xa3", "\xd1", "\xd3",
"\xa6", "\xac", "\xaf",
);
}elseif($from == 'cp1250') {
$from = array(
"\xb9", "\xe6", "\xea",
"\xb3", "\xf1", "\xf3",
"\x9c", "\x9f", "\xbf",
"\xa5", "\xc6", "\xca",
"\xa3", "\xd1", "\xd3",
"\x8c", "\x8f", "\xaf",
);
}
$clear = array(
"\x61", "\x63", "\x65",
"\x6c", "\x6e", "\x6f",
"\x73", "\x7a", "\x7a",
"\x41", "\x43", "\x45",
"\x4c", "\x4e", "\x4f",
"\x53", "\x5a", "\x5a",
);
if(is_array($text)) {
foreach($text as $key => $value) {
$array[str_replace($from, $clear, $key)]= str_replace($from, $clear, $value);
}
return $array;
}else {
return str_replace($from, $clear, $text);
}
} |
function remove_pl($text,$from) {//remove_pl by tosiek - https://tosiek.pl/ if($from == 'utf8') { $from = array( "\xc4\x85", "\xc4\x87", "\xc4\x99", "\xc5\x82", "\xc5\x84", "\xc3\xb3", "\xc5\x9b", "\xc5\xba", "\xc5\xbc", "\xc4\x84", "\xc4\x86", "\xc4\x98", "\xc5\x81", "\xc5\x83", "\xc3\x93", "\xc5\x9a", "\xc5\xb9", "\xc5\xbb", ); }elseif($from == 'latin2') { $from = array( "\xb1", "\xe6", "\xea", "\xb3", "\xf1", "\xf3", "\xb6", "\xbc", "\xbf", "\xa1", "\xc6", "\xca", "\xa3", "\xd1", "\xd3", "\xa6", "\xac", "\xaf", ); }elseif($from == 'cp1250') { $from = array( "\xb9", "\xe6", "\xea", "\xb3", "\xf1", "\xf3", "\x9c", "\x9f", "\xbf", "\xa5", "\xc6", "\xca", "\xa3", "\xd1", "\xd3", "\x8c", "\x8f", "\xaf", ); } $clear = array( "\x61", "\x63", "\x65", "\x6c", "\x6e", "\x6f", "\x73", "\x7a", "\x7a", "\x41", "\x43", "\x45", "\x4c", "\x4e", "\x4f", "\x53", "\x5a", "\x5a", ); if(is_array($text)) { foreach($text as $key => $value) { $array[str_replace($from, $clear, $key)]= str_replace($from, $clear, $value); } return $array; }else { return str_replace($from, $clear, $text); }}
Wywołanie funkcji dla
UTF-8$string = 'ą, ć, ę, ł, ń, ó, ś, ź, ż, Ą, Ć, Ę, Ł, Ń, Ó, Ś, Ź, Ż';
$no_pl = remove_pl($string, utf8);
echo $no_pl; |
$string = 'ą, ć, ę, ł, ń, ó, ś, ź, ż, Ą, Ć, Ę, Ł, Ń, Ó, Ś, Ź, Ż';$no_pl = remove_pl($string, utf8);echo $no_pl;
Wywołanie funkcji dla
ISO-8859-2$string = 'ą, ć, ę, ł, ń, ó, ś, ź, ż, Ą, Ć, Ę, Ł, Ń, Ó, Ś, Ź, Ż';
$no_pl = remove_pl($string, latin2);
echo .$no_pl; |
$string = 'ą, ć, ę, ł, ń, ó, ś, ź, ż, Ą, Ć, Ę, Ł, Ń, Ó, Ś, Ź, Ż';$no_pl = remove_pl($string, latin2);echo .$no_pl;
Wywołanie funkcji dla
Windows-1250$string = 'ą, ć, ę, ł, ń, ó, ś, ź, ż, Ą, Ć, Ę, Ł, Ń, Ó, Ś, Ź, Ż';
$no_pl = remove_pl($string, cp1250);
echo $no_pl; |
$string = 'ą, ć, ę, ł, ń, ó, ś, ź, ż, Ą, Ć, Ę, Ł, Ń, Ó, Ś, Ź, Ż';$no_pl = remove_pl($string, cp1250);echo $no_pl;
W każdym wypadku funkcja zwróci nam:
a, c, e, l, n, o, s, z, z, A, C, E, L, N, O, S, Z, ZUsuwanie polskich znaków online
Możesz tutaj wkleić dowolny kod z polskimi znakami i kliknij przycisk
Usuń polskie znaki, wszystkie polskie znaki zostaną zmienione na język polskawy (wszelkie ogonki, kreseczki i tym podobne zostaną zamienione na znak bez ozdobników np. Ń na N)
?>
03.10.2009 at 16:15
Wielkie dzięki!
Twój skrypt poradził sobie, gdy inne rozwiązania zawiodły. :)
Pozdrawiam!
09.10.2009 at 19:20
Jeśli korzystasz z kodowania ISO-8859-2 latin2 to polecam te tablice, która obsługują wszelkie znaki zawarte w tym kodowaniu Usuwanie polskich znaków ogonków z tekstu ISO-8859-2
10.06.2011 at 11:22
Dobra robota. Pozdrawiam.
12.02.2013 at 19:57
Wielkie dzięki.
Duuuża pomoc.