Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> strtolower(string) i polskie znaki
grzegorzblodz
post 18.02.2008, 15:55:25
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 31.01.2008

Ostrzeżenie: (0%)
-----


Witam, mam problem odnośnie funkcji strtolower()
Działa jak należy dopuki nie trafi na polski znak :/

echo strtolower('AsŁÓŚĆD');

Cytat
asłó�ćd


jest na to jakiś sposób? muszę to jakość przejść bo to mnie blokuje a nie wiem co z tym zrobić sadsmiley02.gif
Go to the top of the page
+Quote Post
nowotny
post 18.02.2008, 16:06:37
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


No z tego co widzę to poprawnie wszystko zamieniło... gdzie masz problem...? Pamiętaj żeby używać wszędzie jednakowego kodowania...
Go to the top of the page
+Quote Post
grzegorzblodz
post 18.02.2008, 16:16:35
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 31.01.2008

Ostrzeżenie: (0%)
-----


Cytat(nowotny @ 18.02.2008, 16:06:37 ) *
No z tego co widzę to poprawnie wszystko zamieniło... gdzie masz problem...? Pamiętaj żeby używać wszędzie jednakowego kodowania...


no tak ale zamiast Ś ja widzę � (znak zapytania z kwadraciku :/ )

mam problem że jak zamienię na małe znaki co muszę zrobić to potem jest problem z funkcją strpos( porównuje 2 stringi)

jeżeli
$a = 'Śmietnik';
$b = 'śm';
i ma sprawdzić czy w $a występuje string $b to sobie nie poradzi po zmianie funkcją strtolower() na małe litery sad.gif

kod:
<?php
$a = strtolower('Śmietnik');
$b = strtolower('śm');
$pos = strpos($sql_str, $szuk);
if ($pos === false) {
echo "string '$b' nie występuje w stringu '$a'<br>";
} else {
echo "string '$b' występuje w stringu '$a'";
echo " na pozycji $pos<br>";
}
?>

wynikiem będzie:
Cytat
string '�m' występuje w stringu '�mietnik' na pozycji 1

co jest prawdą, tylko dlaczego tak się zachowuje kodowanie skoro radzi sobie z innymi polskimi znakami takimi jak Ą czy Ł a ma problem z wyświetleniem poprawnym Ś i przez to wariuje

no ale wygląda że będę musiał doczytać o kodowaniu i jakoś sobie z tym poradzić bo narazie nie wiem co z tym zrobić
Go to the top of the page
+Quote Post
nowotny
post 18.02.2008, 16:34:09
Post #4





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


To co ty widzisz w przeglądarce a to co jest porównywane to jest zupełnie inna sprawa... jako że w kodzie powyżej nie poinformowałeś przeglądarki jakiego kodowania używasz więc ona zgłupiała i zastosowała takie kodowanie jakie jej tam się widzi... do tego jeszcze w tym przypadku musisz wziąć pod uwagę kodowanie samego pliku php... zapisz ten plik w kodowaniu UTF8... dodaj nagłówek i będzie grało...
  1. <meta http-equiv="Content-type" content="text/html; charset=utf-8">


Ten post edytował nowotny 18.02.2008, 16:34:44
Go to the top of the page
+Quote Post
grzegorzblodz
post 18.02.2008, 17:12:50
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 31.01.2008

Ostrzeżenie: (0%)
-----


dziwne bo nic nie dało dodanie nagłówka, nadal widzę cuda zamiast poskich znaków

a i przy zmnianie

echo strtolower('AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWXYZŹŻ');

wyrzucił:
Kod
aĄbcćdeęfghijklłmnńoóprsŚtuwxyzŹż


czy to jest normalne?
Go to the top of the page
+Quote Post
potreb
post 18.02.2008, 17:57:37
Post #6





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Grzesiu sprawdź tak, napewno zadziała:
  1. <?php
  2. $mystring = 'ĄŚĆĘĄĄąśęśbc';
  3. $findme  = 'ą';
  4. $pos = strpos(strtolower($mystring), strtolower($findme));
  5.  
  6. // Note our use of ===. Simply == would not work as expected
  7. // because the position of 'a' was the 0th (first) character.
  8. if ($pos === false) {
  9. echo "The string '$findme' was not found in the string '$mystring'";
  10. } else {
  11. echo "The string '$findme' was found in the string '$mystring'";
  12. echo " and exists at position $pos";
  13. }
  14. ?>


Widze że manula się czyta smile.gif

Ja zastosowałem utf-8 tak, że w pliku mi poprawnie wyświetla polskie litery.

Ten post edytował potreb 18.02.2008, 17:58:53


--------------------

Go to the top of the page
+Quote Post
grzegorzblodz
post 18.02.2008, 18:55:51
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 31.01.2008

Ostrzeżenie: (0%)
-----


Cytat(potreb @ 18.02.2008, 17:57:37 ) *
Grzesiu sprawdź tak, napewno zadziała:
  1. <?php
  2. $mystring = 'ĄŚĆĘĄĄąśęśbc';
  3. $findme  = 'ą';
  4. $pos = strpos(strtolower($mystring), strtolower($findme));
  5.  
  6. // Note our use of ===. Simply == would not work as expected
  7. // because the position of 'a' was the 0th (first) character.
  8. if ($pos === false) {
  9. echo &#092;"The string '$findme' was not found in the string '$mystring'\";
  10. } else {
  11. echo &#092;"The string '$findme' was found in the string '$mystring'\";
  12. echo &#092;" and exists at position $pos\";
  13. }
  14. ?>


Widze że manula się czyta smile.gif

Ja zastosowałem utf-8 tak, że w pliku mi poprawnie wyświetla polskie litery.


manual? bez tego ani rusz

ustawiłem w php.ini kodowanie na UTF-8 i jest jeszcze gorzej dry.gif (bo to tam miałem zmienić?)
Go to the top of the page
+Quote Post
nowotny
post 18.02.2008, 19:26:56
Post #8





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


Cytat(grzegorzblodz @ 18.02.2008, 18:55:51 ) *
ustawiłem w php.ini kodowanie na UTF-8 i jest jeszcze gorzej dry.gif (bo to tam miałem zmienić?)

Nie... php.ini nie ma nic do tego... w edytorze swoim miałeś ustawić żeby pliki się zapisywały w UTF... jaki masz edytor...?
Go to the top of the page
+Quote Post
grzegorzblodz
post 18.02.2008, 20:32:35
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 31.01.2008

Ostrzeżenie: (0%)
-----


Cytat(nowotny @ 18.02.2008, 19:26:56 ) *
Nie... php.ini nie ma nic do tego... w edytorze swoim miałeś ustawić żeby pliki się zapisywały w UTF... jaki masz edytor...?


notepad++
Go to the top of the page
+Quote Post
nowotny
post 18.02.2008, 20:41:11
Post #10





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


No to sobie ustaw Format->Koduj w UTF8 i zapisz skrypt...
Go to the top of the page
+Quote Post
misiek172
post 18.02.2008, 20:50:43
Post #11





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


ehhhh po 1:

Plik musi byc zapisany w formacie UTF-8 (Notantik -> Plik -> Zapisz jakos -> kodowanie -> UTF-8)

po 2: meta tag o kodowaniu UTF-8

po 3: jeżeli jest baza danych MySQL to ma byc w utf i jeszcze do zapytania dodajemy: SET NAMES 'UTF-8'


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
grzegorzblodz
post 18.02.2008, 20:58:50
Post #12





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 31.01.2008

Ostrzeżenie: (0%)
-----


no ładnie, ale mam braki w wiedzy, książka do php 700stron a ja zatrzymałem się na wprowadzeniu
Go to the top of the page
+Quote Post
potreb
post 18.02.2008, 20:59:49
Post #13





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ehh Notatnik nie zapisuje poprawnie do utf-8.


--------------------

Go to the top of the page
+Quote Post
misiek172
post 18.02.2008, 21:01:02
Post #14





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


ciekawe tylko dlaczego zawsze mi wszystko dobrze działa winksmiley.jpg Zapisuje zawsze albo Notatnikiem albo EditPlus


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
potreb
post 18.02.2008, 21:05:13
Post #15





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


I mówisz że notatnik xp-ekowy nie nadpisuje bom sectora?


--------------------

Go to the top of the page
+Quote Post
Najki
post 21.02.2008, 22:30:15
Post #16





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Po co się męczyć, wystarczy dać:
  1. <?php
  2. echo mb_strtolower('AsŁÓŚĆD', 'UTF-8'); // możesz wstawić inne kodowanie
  3. ?>


Standardowa funkcja PHP dostępna od wersji 4.3.0 w górę.

Pozdrawiam,
Najki


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 00:19