Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Rozpoznanie, czy litery są duże czy małe.
miniol
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

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


Czy można w PHP (lub MySQL- bo dane i tak będą zapisane w bazie danych) sprawdzić wielkość liter?

Chodzi mi o to, że jeśli ciąg znaków składa się tylko z dużych liter, to chciałbym to wychwycić. Jeśli ciąg zawiera mieszane litery (zarówno małe jaki duże) lub tylko małe litery, to można go pominąć.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




przepuszczasz ciąg przez funkcję, która zmienia wszystko na duze litery. Jesli ciąg po zmianie jest taki sam jak ciąg przed zmianą, znaczy, że były tam tylko duże litery.
Go to the top of the page
+Quote Post
miniol
post
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

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


Cytat(nospor @ 4.04.2012, 15:27:08 ) *
przepuszczasz ciąg przez funkcję, która zmienia wszystko na duze litery. Jesli ciąg po zmianie jest taki sam jak ciąg przed zmianą, znaczy, że były tam tylko duże litery.

Hehe no faktycznie dość logiczne i proste rozwiązanie (IMG:style_emoticons/default/smile.gif)
Dzięki!
Go to the top of the page
+Quote Post
redeemer
post
Post #4





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Ja bym proponował wyrażenie regularne :-)
  1. if(preg_match('/[a-z]/', $string)){
  2. // ciag zawiera male litery
  3. } else {
  4. // nie zawiera
  5. }
Go to the top of the page
+Quote Post
miniol
post
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

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


Cytat(redeemer @ 4.04.2012, 15:30:35 ) *
Ja bym proponował wyrażenie regularne :-)
  1. if(preg_match('/[a-z]/', $string)){
  2. // ciag zawiera male litery
  3. } else {
  4. // nie zawiera
  5. }

W tym przypadku działa tylko jeśli ciąg jest w całości napisany z małych liter. Jeśli są zarówno małe jaki duże, to nie działa tak jakbym tego chciał.

Ja zastosowałem takie coś i działa tak jak powinno.
  1. $tekst = 'Abcd';
  2. $tekst2= strtoupper($tekst);
  3. if ($tekst === $tekst2) {
  4. echo 'Litery są duże.';
  5. }
  6. else {
  7. echo 'Litery są różne.';
  8. }


Ten post edytował miniol 4.04.2012, 14:57:35
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Jak ty w ogóle nie myślisz.... zamien a-z na A-Z
  1. if(preg_match('/[A-Z]+/', $string)){
  2. // ciag zawiera tylko duże litery
  3. } else {
  4. // nie zawiera
  5. }
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@redeemer, @nospor: preg_match - i nagle z jednego problemu autorowi wątku robią się dwa.

@miniol: Powinieneś raczej użyć mb_strtoupper; strtoupper może w pewnych warunkach nie rozpoznać (i w konsekwencji nie zamienić) polskich znaków: http://ideone.com/Dxi22

Ten post edytował Crozin 4.04.2012, 15:33:15
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Crozin w pierwszym moim poście podałem normalne rozwiązanie. Kontynuowałem wątek z preg_match tylko i wyłącznie dlatego bo ktoś inny go zaczął a autor miał z nim nadal problemy. Nie rozumiem skąd więc ten przytyk w moją stronę.
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@nospor: Tak właściwie to chciałem tylko zaznaczyć jak beznadziejnym pomysłem jest tutaj wyrażenie regularne - bo mimo prostego zadania obaj podaliście błędne wyrażenia. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Oj, czepiasz się szczegółów. Ja poprawiłem jedynie logikę ze nie a-z a A-Z.
No ale proszę, poprawne w pełni wyrażenie: /^[A-Z]+$/
ps: nie zawiera polskich liter (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
redeemer
post
Post #11





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Dodam tylko, że rozwiązanie z wyrażeniem regularnym jest dużo szybsze (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Crozin
post
Post #12





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@redeemer: Nie powiem, zdziwiłem się widząc, że PCRE jest szybsze od mb_strtoupper (od strtoupper jest już wolniejsze).

Ale tak to już jest, że w PHP złe rozwiązanie jest nieraz lepsze, bo korzysta w większym stopniu z elementów natywnych (napisanych w C) niż PHP-owskich. :]
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.12.2025 - 04:20