![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
witam,
przejdę do konkretów: plik php, kodowanie utf-8 formularz method="post" pole tekstowe <input type="text" maxlength="30" name="text" size="30" value="" /> po wysłaniu z formularza mam odbiór: $tablica1=$_POST['text']; for($i=0; $i<strlen($tablica1); $i++) { $znak = $tablica1[$i]; if ($znak== 'ń') print 'ok'; } wpisuję w formularz wyraz z "ń" i nie ma 'ok' czy ktoś mi może powiedzieć dlaczego? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Bo ń to dwa bajty, a ty lecisz forem po jednym bajcie więc w życiu się nie wstrzelisz.
Co tym kodem w ogóle chciałeś osiągnąć? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
nie działa za bardzo... (IMG:style_emoticons/default/sad.gif) próbowałem zakodować znak ń $tekst=$_POST['text']; $eee = bin2hex($tekst[0]); if($eee=='c584') print 'ok'; nie chodzi o sam znak ń...ogólnie o wykrywanie polskich znaków w tekscie |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat nie działa za bardzo... To pokaz jak użyłeś tej funkcji.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) ZAcznij używać bbcode
2)mb_strpos() - zajrzałeś w ogóle do linka co ci podałem? Tu się szuka w tekscie a nie w bajcie tekstu. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to napisz jak. Nie bądź egoistą. Niech potomni którzy natrafią na ten wątek też skorzystają.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
No to napisz jak. Nie bądź egoistą. Niech potomni którzy natrafią na ten wątek też skorzystają. FINALNIE: $tablica1=$_POST['text']; for($i=0; $i<strlen($tablica1); $i++) { if(ord($tablica1[$i])>122) $znak.= ord($tablica1[$i]); if(ord($tablica1[$i])<=122) $znak = ord($tablica1[$i]); if((($znak >='97')&&($znak <='122'))||(($znak >='65')&&($znak <='90'))||($znak =='197132')||($znak =='197131')||($znak =='195179')||($znak =='195147')||($znak =='196135')||($znak =='196134')||($znak =='196153')||($znak =='196152')||($znak =='196133')||($znak =='196132')||($znak =='197188')||($znak =='197187')||($znak =='197186')||($znak =='197185')||($znak =='197155')||($znak =='197154')) { print 'wykryto znak A-Z lub a-z lub polski znak <br />'; $znak=''; } } objaśnienie: ciąg znaków z formularza, odebrany metodą POST, przyporządkujemy do zmiennej $tablica1 i tworzy się tablica znaków. długośc tej tablicy zmierzymy za pomocą funkcji strlen(); pętla for będzie się wykonywać tak długo, jak długa bedzie tablica1; znaki od A-Z i od a-z zajmują w tablicy 1 miejce, ale polskie znaki np."ń", "ć" - dwa miejsca w dodatku - oba bajty polskich znaków są większe od 122 wiemy jednak, że znaki od A-Z i od a-z w tablicy kodów ASCII mają wartości mniejsze od 122 wystarczy sprawdzić czy wartość w tabeli1 jest mniejsza od 122 czy większa jeśli jest mniejsza lub równa- znaczy, że trafiliśmy na znak od A-Z lub a-z jesli jest większa znaczy, że trafiliśmy na jeden z polskich znaków. tak długo jak długo wartość tablicy1 będzie większa od 122 tak długo dodajemy znaki do siebie (linijka if(ord($tablica1[$i])>122) $znak.= ord($tablica1[$i]); ) aby sprawdzić, że w odebramym ciągu są tylko litery - bez znaków specjalnych wystarczy porównać wartośc $znak z odopwiednikami z tableli ascii funkcja ord() zamienia nam znak na kod ascii Ten post edytował Astronovi 19.10.2011, 15:04:39 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.09.2025 - 13:36 |