Tagznaków

polskie znaki w adresach Joomla SEF URL 2

Joomla w wersji 1.5 posiada przyjazne adresy nazwane skrótowo SEF URL’s (ang. seo friendly URL). Mankamentem tej opcji jest to, że polskie znaki są po prostu opuszczane przy zamienianiu tytułu na alias wykorzystywany w przyjaznych adresach. I tak mając tytuł Zażółć gęślą jaźń powinien zostać przekształcony na alias w postaci zazolc-gesla-jazn natomiast domyślnie Joomla zrobi nam z tego ciąg nieprzypominający zupełnie oryginału za-g-l-ja. Joomla 1.6 jest wolna od tej niedoróbki, transliteruje większość znaków z łacińskiego alfabetu – łacińskopochodnych.

Brak polskich znaków w adresie Joomla

Brak polskich znaków w adresach i aliasach Joomli

Continue reading

ISO-8859-1 latin1 ISO-8859-2 latin2 Windows-1250 cp-1250 UTF-8 utf8

ISO-8859-1 latin1 ISO-8859-2 latin2 Windows-1250 cp-1250 UTF-8 utf8

Głęwiem wstępu intotrintorestycznego do convertera dodałem nowe tablice dla kodowania latin1, w którym polskie znaki są zapisane jako krzaczki, krzaki. Otóż konwersja z kodowania ISO-8859-1, w którym nie istnieją polskie znaki, jest jedynie dla kopii baz danych w pliku wykonanych za pomocą phpMyAdmin czyli plików kopii zapisanych w kodowaniu UTF-8 (w tym kodowaniu phpMyAdmin eksportuje bazę danych do pliku). Poprzednie tablice obsługiwały tylko i wyłącznie polskie znaki, co niestety nie służyło polepszeniu stosunków z innymi narodowe znaki i osobami wykorzystujące te znaki diakrytyczne. Teraz tablice obsługują wszelkie znaki (wszelkie języki) które są w kodowaniu ISO-8859-2 Konwersja z latin1 na utf8 – Convert from latin1 to utf8.

  • Polski
  • Bośniacki
  • Chorwacki
  • Czeski
  • Węgierski
  • Serbski (w transkrypcji łacińskiej)
  • Serbsko-Chorwacki
  • Słowacki
  • Słoweński
  • Górnołużycki
  • Dolnołużycki
  • Angielski
  • Niemiecki
  • sporną kwestią jest język Fiński

Dla porównania, poprzednie tablice do konwersji na utf-8 zawierająca tylko 18 polskich znaków natomiast aktualne zawierają wszystkie znaki dla wszystkich języków i znaków specjalnych zawierająca wszystkie istniejące znaki w tym kodowaniu – 167 znaki.
Teraz po konwersji z latin1 bez problemu można konwertować – wszelkie znaki będą działać!

Kodowanie znaków

Kodowanie znaków
Polega na zapisie znaków w celu ich późniejszego odczytania w tym samym kodowaniu. W skrócie, zapisujemy dane w jednym kodowaniu i następnie by je poprawnie odczytać należy odczytać w tym samym kodowaniu a którym je zapisaliśmy. Zapisujemy w kodowaniu utf-8 i odczytujemy w utf-8. Jeśli odczytamy w innym to pojawia się nam krzaki zamiast oczekiwanych znaków. Różne kodowania obsługują różne znaki, najczęściej nieobsługiwane znaki w danym kodowaniu są zamieniane na znaki zapytania.

Pragnę przypomnieć: w kodowaniu latin1 polskie znaki są zapisane jako krzaki, i po konwersji z kodowania latin1 do ISO-8859-2 lub UTF-8 na stronie Konwersja z latin1 na latin2 – Convert from latin1 to latin2, krzaki zapisane w bazie przemieniają się w polskie znaki (znaki diakrytyczne, narodowościowe, narodowe). Polskie znaki są zapisywane jako krzaki najczęściej na serwerach na których jest domyślna konfiguracja serwera mysql, wyglądająca następująco, konfigurację poznamy wykonując kolejno zapytania:
kodowanie mysql

SHOW VARIABLES LIKE 'character_set%';

domyślna konfiguracja serwera mysql:

character set clientlatin1
character_set_connectionlatin1
character set databaselatin1
character_set_resultslatin1
character_set_serverlatin1
character_set_systemlatin1

porównywanie mysql

domyślne porównania serwera mysql

SHOW VARIABLES LIKE 'collation%';
collation_connectionlatin1_swedish_ci
collation_databaselatin1_swedish_ci
collation_serverlatin1_swedish_ci

Jeśli twoje ustawienia są takie jak powyżej, a działają Ci polskie znaki to oznacza, że nie masz polskich znaków a jedynie krzaczki w bazie danych w kodowaniu latin1 Konwersja z ISO-8859-2 na UTF-8 – Convert from ISO-8859-2 to UTF-8 tak naprawdę mamy mnóstwo krzaków zamiast polskich znaków…

Naprawa krzaczków polskich znaków to zrobienie backupu bazy i konwersja za pomocą konwerter kodowań z latin1 na dowolne inne, należy pamiętać,że przy wgrywaniu takiej przekonwertowanej kopii należy wybrać to samo kodowanie na które przekonwertowaliśmy naszą kopię bazy, należy pamiętać o wybraniu zgodności mysql40 Konwersja z UTF-8 na ISO-8859-2 – Convert from UTF-8 to ISO-8859-2, oraz przed wgraniem należy ustawić kodowanie dla bazy by wgrywane tabele ze zgodnością mysql40 przyjęły właściwe kodowanie (ustawiamy także to samo na które przekonwertowaliśmy bazę) za pomocą zapytania:

ALTER DATABASE nazwa_bazy DEFAULT CHARACTER SET nazwa_kodowania COLLATE porównanie_znaków_dla kodowania;

dla kodowania latin2 będzie to wyglądać tak:

ALTER DATABASE nazwa_bazy DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci;

dla kodowania utf8:

ALTER DATABASE nazwa_bazy DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Teraz po takim ustawieniu, wszelkie tabele wgrywane ze zgodnością z mysql40 przyjmą kodowanie jakie ustawiliśmy dla bazy danych. Następnie aby je poprawnie odczytać ustawiamy odpowiednie kodowanie za pomocą SET NAMES oraz aby poprawnie wyświetlić ustawiamy odpowiednią definicję kodowania w pliku HTML. Od tej pory w naszej bazie danych istnieją polskie znaki.

Kolejna informacja: latin1 to to samo kodowanie co ISO-8859-1 tylko, że pod inną nazwą. Tak samo jest z latin2, jest to to samo kodowanie co ISO-8859-2. Są to odmienne nazwy, można ich używać zamiennie, zależy także od zastosowania, uproszczone nazwy najczęściej są wykorzystywane w bazach SQL MYSQL

SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'

a ich dłuższe odpowiedniki na stronach w definicji kodowej HTML. Przykładowo dla treści typu text/html oraz kodowania utf-8

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

SET NAMES ‘charset_name’ COLLATE ‘collation_name’

Otóż w każdym skrypcie w jakim łączymy się z mysql powinniśmy tuż po połączeniu z bazą danych ustawić kodowanie i porównanie z jakiego będziemy korzystać. To jest tak samo jak definicja kodowania w dokumencie HTML / XHTML, jeśli nie ustawimy to zdajemy się na wartości serwera, co często jest opłakane w skutkach na przykład będziemy próbować zapisać tekst zakodowany w utf-8 do bazy w kodowaniu latin2 Konwersja z latin2 na utf8 – Convert from latin2 to utf8, życzę powodzenia…

SET NAMES 'charset_name'

Otóż SET NAMES ustawia 3 parametry na raz z których będzie korzystać nasze połączenie z bazą, w miejsce charset_name wstawiamy nazwę kodowania w formacie odpowiednim dla MYSQL (kiedyś może zrobię listę), a te trzy parametry to:

character_set_client
character_set_results
character_set_connection
character_set_client
Ustawia kodowanie dla klienta
character_set_results
Ustawia kodowanie dla wyników zapytań
character_set_connection
Ustawia kodowanie dla połączenia

Konwersja z utf8 na latin2 – Convert from utf8 to latin2
I te 3 ustawienia konfigurujemy za pomocą jednego SET NAMES. Dochodzi jeszcze porównywanie połączeń (collate, collation) które ustawiamy poprzez dodanie drugiego parametru do SET NAMES, wygląda to tak:

SET NAMES 'charset_name' COLLATE 'collation_name'

Porównywanie to w dużym skrócie sortowanie wyników wedle wybranego kodowania (na przykład przy wybraniu utf8_polish_ci wyniki będą sortowane zgodnei z polskim alfabetem – alfabetycznie). Za charset_name wstawiamy nazwę kodowania a za collation_name wstawiamy nazwę porównywania. Parametr COLLATE ustawia 2 parametry na raz:

collation_connection
collation_database

Konwersja z Windows-1250 na UTF-8 – Convert from Windows-1250 to UTF-8

collation_connection
porównywanie znaków dla połączenia
collation_database
porównywanie znaków dla bazy danych

Informacje o dawno zapomnianym koderku https://tosiek.pl/koderek/, oczywiście to wszystko dotyczy konwerter.

usuwanie znaków specjalnych z kodowania iso-8859-2 latin2

usuwanie znaków specjalnych z kodowania iso-8859-2 latin2

Często zachodzi potrzeba zamiany ogonków na ich graficzne odpowiedniki bez ogonków w kodowaniu ASCII. Najczęściej służy to do przygotowania tekstu wo wyświetlenia w adresie urluri. Lecz niestety jest to zależne od użytego kodowania na stronie jak i bazie danych MYSQL.

Ponieważ najczęściej wykorzystujemy podmianę znaków specjalnych, narodowych, diakrytycznych w przygotowywaniu przyjaznych adresów – friendly URL ze słowami kluczowymi dlatego też potrzebujemy dynamicznej funkcji która to zrobi za nas automatycznie.

Tutaj prezentuję tablice oraz funkcje specjalnie dla kodowania iso-8859-2, znanego pod nazwą latin2, jeszcze inna nazwa to ISO/IEC 8859-2 jak i kodowanie środkowoeuropejskie oraz wschodnioeuropejskie. Może jest to dosć zacofane kodowanie lecz nadal często używane na stronach WWW oraz bazach mysql (latin2) ze względu na obsługę polskich znaków diakrytycznych.

Kodowanie iso-8859-2 obsługuje takie języki jak (pod względem znaków narodowych – specjalnych):

  • Polski
  • Bośniacki
  • Chorwacki
  • Czeski
  • Węgierski
  • Serbski (w transkrypcji łacińskiej)
  • Serbsko-Chorwacki
  • Słowacki
  • Słoweński
  • Górnołużycki
  • Dolnołużycki
  • Angielski
  • Niemiecki
  • sporną kwestią jest język Fiński

Jednakże zalecą się stosowanie kodowań zgodnych z Unicode np. utf-8, ponieważ mimo iż iso-8859-2 wydaje się obsługiwać wiele języków obsługuje ono tylko podstawy i w swoim asortymencie posiada tylko niewiele znaków specjalnych, oraz cała tablica kodowania jest skromna.

O co chodzi w tej konwersji iso-8859-2 to ASCII, otóż o to by zamienić np. nasze polskie ć na jego odpowiednik c który może być obsłużony w adresach URL przez przeglądarki i niestety trzeba postąpić tak z każdym zadaszkowanym i ogonkowym znakiem. Ř -> R i tym podobne…

Poniżej przedstawiam tablice do użytku nie komercyjnego, które ostatnio sobie stworzyłem do przygotowania przyjaznych adresów w kodowaniu iso-8859-2. Są niewrażliwe na kodowanie pliku w którym są zapisane ponieważ korzystają z wartości heksadecymalnych popularnie zwane HEX. Zamieniają każdy znak na jego graficzny odpowiednik, działają z wielkimi jak i małymi literami! Oczywiście zamieniają także polskie znaki!

$map_latin2=array(
"\xa1","\xa3","\xa5","\xa6","\xa7","\xa9","\xaa","\xab","\xac","\xae","\xaf",
"\xb1","\xb3","\xb5","\xb6","\xb9","\xba","\xbb","\xbc","\xbe","\xbf","\xc0",
"\xc1","\xc2","\xc3","\xc4","\xc5","\xc6","\xc7","\xc8","\xc9","\xca","\xcb",
"\xcc","\xcd","\xce","\xcf","\xd0","\xd1","\xd2","\xd3","\xd4","\xd5","\xd6",
"\xd7","\xd8","\xd9","\xda","\xdb","\xdc","\xdd","\xde","\xdf","\xe0","\xe1",
"\xe2","\xe3","\xe4","\xe5","\xe6","\xe7","\xe8","\xe9","\xea","\xeb","\xec",
"\xed","\xee","\xef","\xf0","\xf1","\xf2","\xf3","\xf4","\xf5","\xf6","\xf8",
"\xf9","\xfa","\xfb","\xfc","\xfd","\xfe",
);
//Tablice znakow diakrytycznych 
//dla kodowania iso-8859-2 (latin2)
//by tosiek - https://tosiek.pl/
$map2_latin2=array(
"\x41","\x4c","\x4c","\x53","\x53","\x53","\x53","\x54","\x5a","\x5a","\x5a",
"\x61","\x6c","\x6c","\x73","\x73","\x73","\x74","\x7a","\x7a","\x7a","\x52",
"\x41","\x41","\x41","\x41","\x4c","\x43","\x43","\x43","\x45","\x45","\x45",
"\x45","\x49","\x49","\x44","\x44","\x4e","\x4e","\x4f","\x4f","\x4f","\x4f",
"\x78","\x52","\x55","\x55","\x55","\x55","\x59","\x54","\x73\x73","\x72","\x61",
"\x61","\x61","\x61","\x6c","\x63","\x63","\x63","\x65","\x65","\x65","\x65",
"\x69","\x69","\x64","\x64","\x6e","\x6e","\x6f","\x6f","\x6f","\x6f","\x72",
"\x75","\x75","\x75","\x75","\x79","\x74",
);

Na pierwszy rzut oka nie są czytelne, lecz poniżej prezentuję ich wersję z której odradzam korzystać, ponieważ taki plik z poniższymi tablicami musi być bezwzględnie zapisany w kodowaniu iso-8859-2 (trzeba się pilnować), także do użytku niekomercyjnego:

$map_latin2=array(
'Ą','Ł','Ľ','Ś','§','Š','Ş','Ť','Ź','Ž','Ż',
'ą','ł','ľ','ś','š','ş','ť','ź','ž','ż','Ŕ',
'Á','Â','Ă','Ä','Ĺ','Ć','Ç','Č','É','Ę','Ë',
'Ě','Í','Î','Ď','Đ','Ń','Ň','Ó','Ô','Ő','Ö',
'×','Ř','Ů','Ú','Ű','Ü','Ý','Ţ','ß','ŕ','á',
'â','ă','ä','ĺ','ć','ç','č','é','ę','ë','ě',
'í','î','ď','đ','ń','ň','ó','ô','ő','ö','ř',
'ů','ú','ű','ü','ý','ţ',
);
//Tablice znakow diakrytycznych 
//dla kodowania iso-8859-2 (latin2)
//by tosiek - https://tosiek.pl/
$map2_latin2=array(
'A','L','L','S','S','S','S','T','Z','Z','Z',
'a','l','l','s','s','s','t','z','z','z','R',
'A','A','A','A','L','C','C','C','E','E','E',
'E','I','I','D','D','N','N','O','O','O','O',
'x','R','U','U','U','U','Y','T','ss','r','a',
'a','a','a','l','c','c','c','e','e','e','e',
'i','i','d','d','n','n','o','o','o','o','r',
'u','u','u','u','y','t',
);

Posiadając tablice znaków diakrytycznych możemy zamienić te znaki na ich odpowiedniki – funkcja str_replace(), lecz to nie jest całkowite przygotowanie adresów URL należy się także pozbyć znaków specjalnych, przestankowych i tym podobnych, które nie są obsługiwane w adresach. Tutaj wykorzystamy wyrażenia regularne (regular expressions) – funkcja preg_replace(), które zamienią każdy znak nie wchodzący w skład wyrazów na myślniki (-) lub podkreślniki – znaki podkreślenia (_), zależy kto jak woli, następnie musimy usunąć te znaki z początku i końca, wykorzystamy funkcję trim() z dodatkowym parametrem.

Ci którzy chcą by adresy były złożony tylko z małych liter muszą użyć funkcji strtolower()

Adresy URL – URI ze słowami kluczowymi

Wiec zaczynamy sobie pisać funkcję specialchar_latin2() która jako jedyny argument przyjmuje ciąg który przygotowuje do wyświetlenia adresu URL:

function specialchar_latin2($url) {
//specialchar_latin2 by tosiek https://tosiek.pl/
	global $map_latin2,$map2_latin2;
	$url = str_replace($map_latin2,$map2_latin2,$url);
	return $url;
}

Należy pamiętać by tablice ze znakami narodowymi były zdefiniowane poza – przed funkcją. Ciąg zażółć?gęślą !?jaźń;;\ZAŻÓŁĆ []GĘŚLĄ (JAŹŃ-- po przejściu przez tę funkcję będzie miał postać: zazolc?gesla !?jazn;;\ZAZOLC []GESLA (JAZN–, nie nadaje się do wykorzystania w adresie.
Jak na razie funkcja zamienia tylko znaki narodowe z tablic, dodajmy do niej wyrażenie regularne zamieniające wszystko co nie jest znakiem wchodzącym w skład słów i występujące jeden raz lub więcej na myślnik – (kto woli podkreślnik _), posłużymy się zdefiniowaną klasą negującą znaki wchodzące w skład słów \W

function specialchar_latin2($url) {
//specialchar_latin2 by tosiek https://tosiek.pl/
	global $map_latin2,$map2_latin2;
	$url = str_replace($map_latin2,$map2_latin2,$url);
	$url = preg_replace('#[\W]{1,}#','-',$url);
	return $url;
}

Teraz zamieniamy wszystko co zbędne (spacje, wykrzykniki, znaki zapytanie i tym podobne na myślniki. Ciąg zażółć?gęślą !?jaźń;;\ZAŻÓŁĆ []GĘŚLĄ (JAŹŃ-- po przejściu przez funkcję miałby postać: zazolc-gesla-jazn-ZAZOLC-GESLA-JAZN-, lecz jak widać pozostał myślnik na końcu, może także czasami pozostać na początku co jest całkowicie zbędne, użyjemy funkcji trim() do jego usunięcia:

function specialchar_latin2($url) {
//specialchar_latin2 by tosiek https://tosiek.pl/
	global $map_latin2,$map2_latin2;
	$url = str_replace($map_latin2,$map2_latin2,$url);
	$url = preg_replace('#[\W]{1,}#','-',$url);
	$url = trim($url,'-');
	return $url;
}

Teraz ciąg miałby postać: zazolc-gesla-jazn-ZAZOLC-GESLA-JAZN, a co jeśli byśmy chcieli by składał się z małych estetycznych liter? Wystarczy skorzystać z funkcji strtolower() zamieniającej wielkie litery na małe.

function specialchar_latin2($url) {
//specialchar_latin2 by tosiek https://tosiek.pl/
	global $map_latin2,$map2_latin2;
	$url = str_replace($map_latin2,$map2_latin2,$url);
	$url = preg_replace('#[\W]{1,}#','-',$url);
	$url = trim($url,'-');
	$url = strtolower($url);
	return $url;
}

Teraz otrzymujemy oczekiwany efekt zazolc-gesla-jazn-zazolc-gesla-jazn, zamienione znaki narodowe na ich odpowiedniki, spacje i inne znaki specjalne zamienione na myślniki (lub podkreślniki) oraz cały ciąg pisany mała czcionką bez wielkich liter. Taki ciąg można wykorzystać w adresie URL.

Bardzo przydatna rzecz do tworzenia przyjaznych adresów ze słowami kluczowymi. Oczywiście dla kodowania iso-8859-2, które niestety nadal jest w użyciu.

Funkcja specialchar_latin2() w ostatecznej wersji:

$map_latin2=array(
	"\xa1","\xa3","\xa5","\xa6","\xa7","\xa9","\xaa","\xab","\xac","\xae","\xaf",
	"\xb1","\xb3","\xb5","\xb6","\xb9","\xba","\xbb","\xbc","\xbe","\xbf","\xc0",
	"\xc1","\xc2","\xc3","\xc4","\xc5","\xc6","\xc7","\xc8","\xc9","\xca","\xcb",
	"\xcc","\xcd","\xce","\xcf","\xd0","\xd1","\xd2","\xd3","\xd4","\xd5","\xd6",
	"\xd7","\xd8","\xd9","\xda","\xdb","\xdc","\xdd","\xde","\xdf","\xe0","\xe1",
	"\xe2","\xe3","\xe4","\xe5","\xe6","\xe7","\xe8","\xe9","\xea","\xeb","\xec",
	"\xed","\xee","\xef","\xf0","\xf1","\xf2","\xf3","\xf4","\xf5","\xf6","\xf8",
	"\xf9","\xfa","\xfb","\xfc","\xfd","\xfe",
);
//Tablice znakow diakrytycznych 
//dla kodowania iso-8859-2 (latin2)
//by tosiek - https://tosiek.pl/
$map2_latin2=array(
	"\x41","\x4c","\x4c","\x53","\x53","\x53","\x53","\x54","\x5a","\x5a","\x5a",
	"\x61","\x6c","\x6c","\x73","\x73","\x73","\x74","\x7a","\x7a","\x7a","\x52",
	"\x41","\x41","\x41","\x41","\x4c","\x43","\x43","\x43","\x45","\x45","\x45",
	"\x45","\x49","\x49","\x44","\x44","\x4e","\x4e","\x4f","\x4f","\x4f","\x4f",
	"\x78","\x52","\x55","\x55","\x55","\x55","\x59","\x54","\x73\x73","\x72","\x61",
	"\x61","\x61","\x61","\x6c","\x63","\x63","\x63","\x65","\x65","\x65","\x65",
	"\x69","\x69","\x64","\x64","\x6e","\x6e","\x6f","\x6f","\x6f","\x6f","\x72",
	"\x75","\x75","\x75","\x75","\x79","\x74",
);
function specialchar_latin2($url) {
//specialchar_latin2 by tosiek https://tosiek.pl/
	global $map_latin2,$map2_latin2;
	$url = str_replace($map_latin2,$map2_latin2,$url);
	$url = preg_replace('#[\W]{1,}#','-',$url);
	$url = trim($url,'-');
	$url = strtolower($url);
	return $url;
}

Życzę miłego tworzenia przyjaznych adresów dla wyszukiwarek i użytkowników (wiesz w co klikasz widząc sam link).

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)




?>