Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Rozpoznanie, czy litery są duże czy małe.
miniol
post 4.04.2012, 14:24:47
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
nospor
post 4.04.2012, 14:27:08
Post #2





Grupa: Moderatorzy
Postów: 36 557
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.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miniol
post 4.04.2012, 14:30:15
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 smile.gif
Dzięki!
Go to the top of the page
+Quote Post
redeemer
post 4.04.2012, 14:30:35
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 4.04.2012, 14:54:13
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 4.04.2012, 14:57:37
Post #6





Grupa: Moderatorzy
Postów: 36 557
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. }


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post 4.04.2012, 15:32:42
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 4.04.2012, 17:30:23
Post #8





Grupa: Moderatorzy
Postów: 36 557
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ę.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post 4.04.2012, 18:56:08
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. wink.gif
Go to the top of the page
+Quote Post
nospor
post 4.04.2012, 19:33:50
Post #10





Grupa: Moderatorzy
Postów: 36 557
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 tongue.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
redeemer
post 5.04.2012, 09:58:00
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 wink.gif


--------------------
Go to the top of the page
+Quote Post
Crozin
post 5.04.2012, 11:42:51
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 19:10