usuwanie polskich znaków php

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);
	}
}
Wywołanie funkcji dla UTF-8
$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;
Wywołanie funkcji dla Windows-1250
$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, Z

Usuwanie 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)




?>

4 Comments

  1. Wielkie dzięki!
    Twój skrypt poradził sobie, gdy inne rozwiązania zawiodły. :)
    Pozdrawiam!

  2. tosiek

    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

  3. Dobra robota. Pozdrawiam.

  4. Wielkie dzięki.
    Duuuża pomoc.

Dodaj komentarz