[PHP]Usuwanie/zamienianie polskich znaków, ż -> z , ó -> o, ł -> l itd. |
|
|
|
|
21.09.07 - 12:04
|

pozycja: 43
Grupa: Members
Postów: 2,411
Podziekowań: 38
Dołączył: 19.06.2005
Skąd: Dąbrowa Górnicza
Nr użytkownika: 1,928

|
Potrzebuje jakoś zamieniać polskie znaki na ich odpowiedniki bez 'ogonków'. Testowałem zarówno funkcje KOD htmlspecialchars oraz taki kod: KOD function toPermalink($string) { $unPretty = array('/ä/', '/ö/', '/ü/', '/Ä/', '/Ö/', '/Ü/', '/ß/', '/ą/', '/Ą/', '/ć/', '/Ć/', '/ę/', '/Ę/', '/ł/', '/Ł/' ,'/ń/', '/Ń/', '/ó/', '/Ó/', '/ś/', '/Ś/', '/ź/', '/Ź/', '/ż/', '/Ż/', '/Š/','/Ž/','/š/','/ž/','/Ÿ/','/Ŕ/','/Á/','/Â/','/Ă/','/Ä/','/Ĺ/','/Ç/','/Č/','/É/','/Ę/','/Ë/','/Ě/','/Í/','/Î/','/Ď/','/Ń/', '/Ň/','/Ó/','/Ô/','/Ő/','/Ö/','/Ř/','/Ů/','/Ú/','/Ű/','/Ü/','/Ý/','/ŕ/','/á/','/â/','/ă/','/ä/','/ĺ/','/ç/','/č/','/é/','/ę/', '/ë/','/ě/','/í/','/î/','/ď/','/ń/','/ň/','/ó/','/ô/','/ő/','/ö/','/ř/','/ů/','/ú/','/ű/','/ü/','/ý/','/˙/', '/Ţ/','/ţ/','/Đ/','/đ/','/ß/','/Œ/','/œ/','/Ć/','/ć/','/ľ/');
$pretty = array('ae', 'oe', 'ue', 'Ae', 'Oe', 'Ue', 'ss', 'a', 'A', 'c', 'C', 'e', 'E', 'l', 'L', 'n', 'N', 'o', 'O', 's', 'S', 'z', 'Z', 'z', 'Z', 'S','Z','s','z','Y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N', 'O','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e', 'e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y', 'TH','th','DH','dh','ss','OE','oe','AE','ae','u');
$permalink = strtolower(preg_replace($unPretty, $pretty, $string)); return str_replace(" ", "-", preg_replace("/[^a-zA-Z0-9 ]/", "", $permalink) );
} jednak żadne z tych rozwiązań nie potrafi zamienić "ó" - ten znak zawsze jest "ó" - pozostałe się ładnie zamieniają.
--------------------
JUŻ PONAD 1900 UŻYTKOWNIKÓW SKORZYSTAJ Z PEWNEGO ROZWIĄZANIA 
|
|
|
|
|
|
|
|
|
21.09.07 - 12:09
|

pozycja: 43
Grupa: Members
Postów: 2,411
Podziekowań: 38
Dołączył: 19.06.2005
Skąd: Dąbrowa Górnicza
Nr użytkownika: 1,928

|
Pozwole sobie odpisać - u mnie zadziałało przed chwilą: KOD <?php $tekst = 'Zażółć gęślą jaźń'; $wynik = strtr($tekst, 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn'); echo($wynik); ?> Moze komus sie przyda  EDIT: a wie ktoś czemu jak zamienie to na funkcje: KOD function zamiana($tekst) { $wynik = strtr($tekst, 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn'); echo($tekst); } zamiana(śćółóóółłłł); to znów "ó" nie zamienia  ?
Ten post edytował Ptaq 21.09.07 - 12:15
--------------------
JUŻ PONAD 1900 UŻYTKOWNIKÓW SKORZYSTAJ Z PEWNEGO ROZWIĄZANIA 
|
|
|
|
|
|
|
|
|
21.09.07 - 12:51
|

za puszczanie bąków też można dostać bana
Grupa: Members
Postów: 2,076
Podziekowań: 38
Dołączył: 9.08.2005
Skąd: my cie znamy?
Nr użytkownika: 2,355

|
Zmiast echo($tekst); ma być echo($wynik);
Zamiast zamiana(śćółóóółłłł); ma być zamiana('śćółóóółłłł');
--------------------
produkcja filmów, filmy reklamowe, filmy wizerunkowe, spoty telewizyjne, produkcje filmowe.
|
|
|
|
|
|
|
|
|
21.09.07 - 12:59
|

pozycja: 43
Grupa: Members
Postów: 2,411
Podziekowań: 38
Dołączył: 19.06.2005
Skąd: Dąbrowa Górnicza
Nr użytkownika: 1,928

|
Ale wstyd taki błąd... ale ważne ze już śmiga
--------------------
JUŻ PONAD 1900 UŻYTKOWNIKÓW SKORZYSTAJ Z PEWNEGO ROZWIĄZANIA 
|
|
|
|
|
|
|
|
|
21.09.07 - 14:51
|

Grupa: Members
Postów: 2,950
Podziekowań: 54
Dołączył: 24.08.2005
Skąd: 91.121.92.202
Nr użytkownika: 2,500

|
W notatkach opery jeszcze mam takie coś  Może się przydać... znalezione gdzieś w sieci... KOD function plCharset($string) { $string = strtolower($string); $polskie = array(',', ' - ',' ','ę', 'Ę', 'ó', 'Ó', 'Ą', 'ą', 'Ś', 's', 'ł', 'Ł', 'ż', 'Ż', 'Ź', 'ź', 'ć', 'Ć', 'ń', 'Ń','-',"'","/","?", '"', ":", 'ś', '!','.', '&', '&', '#', ';', '[',']','domena.pl', '(', ')', '`', '%', '”', '„', '…'); $miedzyn = array('-','-','-','e', 'e', 'o', 'o', 'a', 'a', 's', 's', 'l', 'l', 'z', 'z', 'z', 'z', 'c', 'c', 'n', 'n','-',"","","","","",'s','','', '', '', '', '', '', '', '', '', '', '', '', ''); $string = str_replace($polskie, $miedzyn, $string); // usuń wszytko co jest niedozwolonym znakiem $string = preg_replace('/[^0-9a-z\-]+/', '', $string); // zredukuj liczbę myślników do jednego obok siebie $string = preg_replace('/[\-]+/', '-', $string); // usuwamy możliwe myślniki na początku i końcu $string = trim($string, '-');
$string = stripslashes($string); // na wszelki wypadek $string = urlencode($string); return $string; }
--------------------
|
|
|
|
|
|
|
|
|
8.12.07 - 20:00
|

Grupa: Members
Postów: 277
Podziekowań: 0
Dołączył: 15.10.2007
Skąd: Olsztyn
Nr użytkownika: 10,974

|
Dopisze swoje rozwiązanie: KOD function przyjazny_string($string){ $string = strtr($string, 'ĘęÓ󥹌śŁłŹźŻżĆćŃń', 'EeOoAaSsLlZzZzCcNn'); $string = strtr($string, 'ˇ¦¬±¶Ľ','ASZasz'); $string = preg_replace("'[[:punct:][:space:]]'",'-',$string); $string = strtolower($string); $znaki = '-'; $powtorzen = 1; $string = preg_replace_callback('#(['.$znaki.'])\1{'.$powtorzen.',}#', create_function('$a', 'return substr($a[0], 0,'.$powtorzen.');'), $string); return $string; } Funkcja bez problemu zamienia tekst typu "Śmiecie & Rupiecie" na "smiecie-ropiecie" Edyta: Specjalnie napisałem przez "ó" żeby zobrazować działanie, ale jakiś czujny admin albo wredna autocenzura poprawiła
Ten post edytował Pilsener 9.12.07 - 21:22
--------------------
|
|
|
|
|
|
|
|
|
8.12.07 - 20:59
|
Grupa: Members
Postów: 461
Podziekowań: 2
Dołączył: 1.10.2007
Nr użytkownika: 10,829

|
Ale Rupiecie to sie raczej przez 'u' pisze, wiec szkoda ze zamienia ;( ;D
|
|
|
|
|
|
|
|
|
8.12.07 - 22:40
|

Grupa: Members
Postów: 4,844
Podziekowań: 7
Dołączył: 24.12.2004
Nr użytkownika: 762

|
To i ja dam swoje  KOD class hUrls { private $a = array( 'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń', 'ę', 'ó', 'ą', 'ś', 'ł', 'ż', 'ź', 'ć', 'ń' ); private $b = array( 'E', 'O', 'A', 'S', 'L', 'Z', 'Z', 'C', 'N', 'e', 'o', 'a', 's', 'l', 'z', 'z', 'c', 'n' ); public function Parse( $string ) { $string = str_replace( $this -> a, $this -> b, $string ); $string = preg_replace( '#[^a-z0-9]#is', ' ', $string ); $string = trim( $string ); $string = preg_replace( '#\s{2,}#', ' ', $string ); $string = str_replace( ' ', '-', $string ); return $string; } }
--------------------
|
|
|
|
|
|
|
|
|
9.12.07 - 00:12
|

Specialista od spraw niemożliwych
Grupa: Members
Postów: 4,043
Podziekowań: 53
Dołączył: 20.12.2006
Skąd: Olsztyn
Nr użytkownika: 7,876

|
To jeszcze niech ktoś napisze taką wersję która bedzie łykała PL-znaki w dowolnym kodowaniu  Przez dowolne kodowanie rozumiem: UTF8 ISO8859-2(latin2) WIN1250(cp1250) Niech polskie znaki bedą zdefiniowane nie jako STRINGI ale jako liczby w zapisie szesnastkowym , podczas kopiowania i wklejania z takim kodem nic sie nie stanie  A jak sie kopiuje i wkleja z Pl-znakami to czasmi dzieją sie różne rzeczy  Już nie wspomne o tym ze trzeba być swiadomym w jakim kodowaniu sie aktualnie pracuje. Jak bedą zapisy szesnastkowe bedzie to bardziej uniwersalne  [mniej osób będzie pisało że im nie działa ]
Ten post edytował Maximus Marius 9.12.07 - 00:14
--------------------
|
|
|
|
|
|
|
|
|
9.12.07 - 00:17
|

Niebo wzywa, ziemia przyciąga... BlueSky.
Grupa: Members
Postów: 3,712
Podziekowań: 66
Dołączył: 29.04.2005
Skąd: 49° 34' N 19° 01' E
Nr użytkownika: 1,542

|
KOD <?php
function win2utf(){ $tabela = Array( "xb9" => "xc4x85", "xa5" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86", "xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81", "xf3" => "xc3xb3", "xd3" => "xc3x93", "x9c" => "xc5x9b", "x8c" => "xc5x9a", "x9f" => "xc5xbc", "xaf" => "xc5xbb", "xbf" => "xc5xba", "xac" => "xc5xb9", "xf1" => "xc5x84", "xd1" => "xc5x83"); return $tabela; }
function iso2utf(){ $tabela = Array( "xb1" => "xc4x85", "xa1" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86", "xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81", "xf3" => "xc3xb3", "xd3" => "xc3x93", "xb6" => "xc5x9b", "xa6" => "xc5x9a", "xbc" => "xc5xbc", "xac" => "xc5xbb", "xbf" => "xc5xba", "xaf" => "xc5xb9", "xf1" => "xc5x84", "xd1" => "xc5x83"); return $tabela; } function ISO88592_2_UTF8($tekst){ return strtr($tekst, iso2utf()); }
function UTF8_2_ISO88592($tekst){ return strtr($tekst, array_flip(iso2utf())); }
function WIN1250_2_UTF8($tekst){ return strtr($tekst, win2utf()); }
function UTF8_2_WIN1250($tekst){ return strtr($tekst, array_flip(win2utf())); }
function ISO88592_2_WIN1250($tekst){ return strtr($tekst, "xa1xa6xacxb1xb6xbc", "xa5x8cx8fxb9x9cx9f"); }
function WIN1250_2_ISO88592($tekst){ return strtr($tekst, "xa5x8cx8fxb9x9cx9f", "xa1xa6xacxb1xb6xbc");
} ?> źródło: 4programmers.netMar.
Ten post edytował Mar 9.12.07 - 00:20
--------------------
|
|
|
|
|
|
|
|
|
9.12.07 - 01:03
|

Specialista od spraw niemożliwych
Grupa: Members
Postów: 4,043
Podziekowań: 53
Dołączył: 20.12.2006
Skąd: Olsztyn
Nr użytkownika: 7,876

|
KOD <? /* Funkcja do usuwania polskich znakow z tekstu o dowolnym kodowaniu Autor: Marius Maximus Inspiracja: http://4programmers.net/PHP/FAQ/Jak_zmieni%C4%87_kodowanie_tekstu_nie_maj%C4%85c_dost%C4%99pu_do_funkcji_iconv_%5C
Sposob uzycia: $zmienna = _no_pl("jakiś tekst z PL-znakami np. ŻÓŁĆ");
*/ function _no_pl($tekst) { $tabela = Array( //WIN "xb9" => "a", "xa5" => "A", "xe6" => "c", "xc6" => "C", "xea" => "e", "xca" => "E", "xb3" => "l", "xa3" => "L", "xf3" => "o", "xd3" => "O", "x9c" => "s", "x8c" => "S", "x9f" => "z", "xaf" => "Z", "xbf" => "z", "xac" => "Z", "xf1" => "n", "xd1" => "N", //UTF "xc4x85" => "a", "xc4x84" => "A", "xc4x87" => "c", "xc4x86" => "C", "xc4x99" => "e", "xc4x98" => "E", "xc5x82" => "l", "xc5x81" => "L", "xc3xb3" => "o", "xc3x93" => "O", "xc5x9b" => "s", "xc5x9a" => "S", "xc5xbc" => "z", "xc5xbb" => "Z", "xc5xba" => "z", "xc5xb9" => "Z", "xc5x84" => "n", "xc5x83" => "N", //ISO "xb1" => "a", "xa1" => "A", "xe6" => "c", "xc6" => "C", "xea" => "e", "xca" => "E", "xb3" => "l", "xa3" => "L", "xf3" => "o", "xd3" => "O", "xb6" => "s", "xa6" => "S", "xbc" => "z", "xac" => "Z", "xbf" => "z", "xaf" => "Z", "xf1" => "n", "xd1" => "N");
return strtr($tekst,$tabela); } ?>
Ten post edytował Maximus Marius 9.12.07 - 01:37
--------------------
|
|
|
|
|
|
|
|
|
9.12.07 - 10:59
|
tejot
Grupa: Members
Postów: 1,055
Podziekowań: 0
Dołączył: 11.11.2006
Skąd: Ruda Śląska
Nr użytkownika: 7,097

|
Extra!
--------------------
|
|
|
|
|
|
|
|
|
8.03.08 - 14:19
|

Grupa: Members
Postów: 1,497
Podziekowań: 30
Dołączył: 6.02.2006
Nr użytkownika: 3,931

|
Kurcze a u mnie ta funkcja Maximusa Mariusa kompletnie nic nie zmienia. Ani przykłady ze skryptu ani nic co sam wklepie. tak jak by te kody "xb9" nic dla niego nie znaczyły jak zmienię na byle co to działa. Odpalam testowo na localhoscie może ktoś wie o co chodzi ?
--------------------
|
|
|
|
|
|
|
|
|
8.03.08 - 22:41
|

Specialista od spraw niemożliwych
Grupa: Members
Postów: 4,043
Podziekowań: 53
Dołączył: 20.12.2006
Skąd: Olsztyn
Nr użytkownika: 7,876

|
xb9 to zapis szesnastkowy xB9 = ord(185) popatrzył bym jakims edytorem który pokazuje zapis szesnastkowy czy rzeczywiście w Twoim tekście są te znaki tak zapisane . A sprawdz to, bo widzę ze ukośniki "wcięło"  KOD <? /* Funkcja do usuwania polskich znakow z tekstu o dowolnym kodowaniu Autor: Marius Ma\ximus Inspiracja: http://4programmers.net/PHP/FAQ/Jak_zmieni%C4%87_kodowanie_tekstu_nie_maj%C4%85c_dost%C4%99pu_do_funkcji_iconv_%5C
Sposob uzycia: $zmienna = _no_pl("jakiś tekst z PL-znakami np. ŻÓŁĆ");
*/ function _no_pl($tekst) { $tabela = Array( //WIN "\xb9" => "a", "\xa5" => "A", "\xe6" => "c", "\xc6" => "C", "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L", "\xf3" => "o", "\xd3" => "O", "\x9c" => "s", "\x8c" => "S", "\x9f" => "z", "\xaf" => "Z", "\xbf" => "z", "\xac" => "Z", "\xf1" => "n", "\xd1" => "N", //UTF "\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C", "\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L", "\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S", "\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z", "\xc5\x84" => "n", "\xc5\x83" => "N", //ISO "\xb1" => "a", "\xa1" => "A", "\xe6" => "c", "\xc6" => "C", "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L", "\xf3" => "o", "\xd3" => "O", "\xb6" => "s", "\xa6" => "S", "\xbc" => "z", "\xac" => "Z", "\xbf" => "z", "\xaf" => "Z", "\xf1" => "n", "\xd1" => "N");
return strtr($tekst,$tabela); } ?>
--------------------
|
|
|
|
|
|
|
|
|
9.03.08 - 13:54
|

Grupa: Members
Postów: 1,497
Podziekowań: 30
Dołączył: 6.02.2006
Nr użytkownika: 3,931

|
Ha no i teraz smiga dzieki
--------------------
|
|
|
|
|
|
|
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:
|
|