Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: strtolower(string) i polskie znaki
Forum PHP.pl > Forum > Przedszkole
grzegorzblodz
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
nowotny
No z tego co widzę to poprawnie wszystko zamieniło... gdzie masz problem...? Pamiętaj żeby używać wszędzie jednakowego kodowania...
grzegorzblodz
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ć
nowotny
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">
grzegorzblodz
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?
potreb
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.
grzegorzblodz
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ć?)
nowotny
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...?
grzegorzblodz
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++
nowotny
No to sobie ustaw Format->Koduj w UTF8 i zapisz skrypt...
misiek172
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'
grzegorzblodz
no ładnie, ale mam braki w wiedzy, ksi±żka do php 700stron a ja zatrzymałem się na wprowadzeniu
potreb
Ehh Notatnik nie zapisuje poprawnie do utf-8.
misiek172
ciekawe tylko dlaczego zawsze mi wszystko dobrze działa winksmiley.jpg Zapisuje zawsze albo Notatnikiem albo EditPlus
potreb
I mówisz że notatnik xp-ekowy nie nadpisuje bom sectora?
Najki
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
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.