![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 2.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czemu ale funkcja str_replace nie działa mi dobrze z polskimi znakami. Mam łańcuch znaków wpisany w kodzie php (edytor ma kodowanie utf-8), następnie zamieniam w tym łańcuchu znaki diakrytyczne na ich odpowiedniki w ascii: 'ą' na 'a', 'ć' na 'c' i tak dalej. I na stronie dostaje same znaki zapytania w miejsce polskich liter. Kodowanie strony jest utf-8 i teksty wpisane w htmlu są poprawnie wyświetlane. Co zrobić?
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 283 Pomógł: 15 Dołączył: 22.03.2009 Skąd: Bytów Ostrzeżenie: (0%) ![]() ![]() |
Kod $cenzura = array('±', 'ć', 'ł', 'ó', '¶', ' ', 'ę', 'ń', 'ż', 'Ľ' ); $zamiana = array('a', 'c', 'l', 'o', 's', '_', 'e', 'n', 'z', 'z' ); Spróbuj tak. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
lub
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 2.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedzi.
miałem coś takiego: $cenzura = array('ą', 'ć', 'ł', 'ó', 'ś', ' ', 'ę', 'ń', 'ż', 'ź' ); $zamiana = array('a', 'c', 'l', 'o', 's', '_', 'e', 'n', 'z', 'z' ); $a=str_replace( $cenzura, $zamiana, $a); czemu to nie działało? Dlaczego tak jest? <?php strtr($str,"ĄĆĘŁŃÓŚŻŹąćęłńóśżź","ACELNOSZZacelnoszz"); ?> to działa, a poprzednie nie. Nic z tego nie rozumiem. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 141 Dołączył: 11.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
strtr nie działa dla UTF8 (dokument zapisany w utf8, oraz charset utf-8), dla iso-8859-2 owszem.
Sprawdź $tekst = "Zażółć gęślą jaźń"; Działa natomiast str_replace.
Ten post edytował athei 13.07.2009, 19:32:52 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 2.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
athei masz rację, omyłkowo sprawdzałem działanie strtr dla kodowania iso.
Ale dlaczego str_replace nie zadziałał w postaci w jakiej go podałem? Co zrobiłem źle? Czemu wyświetlał znaki zapytania zamiast odpowiedników ascii dla polskich liter? Proszę wytłumacz mi to, bo nie daje mi to spokoju. Od czego to zależy? widzę, że indeksy w $aReplacePL zawierają ąęćś - polskie znaki diakrytyczne. Czy indeksy tablic asocjacyjnych nie muszą być ascii? Pozdrawiam. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 141 Dołączył: 11.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
1.Nie wiem jak użyłeś swój kod, ale mi działa
2. nie |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 2.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
athei już się chyba wyjaśniło, wcześniej przed str_replace użyłem strtolower. I właśnie ta funkcja namieszała. Po jej wycięciu jest ok - musiałem dopisać zamiany dla wielkich liter i dopiero potem zamiana na małe literki. Czemu strtolower tak brzydko się zachowuje? W manualu znalazłem: Note that 'alphabetic' is determined by the current locale. Czyli pewnie gdzieś w konfiguracyjnym pliku mogę przestawić na polski alfabet, ale to czyni skrypt/stronę zupełnie nie przenośną - nie zawszę będę miał dostęp do konfiguracji php. Czy da się zmienić ten "local" i w ogóle domyślne kodowanie zawsze i wszędzie na utf-8 z poziomu skryptu php?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 141 Dołączył: 11.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
strtolower nie działa dla UTF8 tak samo jak np. ( strlen, strpos, strrpos, substr, strtoupper, ord, chr) i wiele innych.
mb_strtolower natomiast działa. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 2.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
athei nie wiedziałem o tym
![]() Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 5.05.2025 - 06:15 |