Zachowanie się funkcji preg_match |
Zachowanie się funkcji preg_match |
22.04.2013, 21:53:00
Post
#1
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 11.09.2009 Ostrzeżenie: (0%) |
Witam
Ostatnio trenuję z funkcją preg_match. Zachodzę w głowę jednak dlaczego zachowuje się ona następująco, tzn. nie działa 1.
Skoro jest 5 liter 'a', to skrypcik powinien zwrócić '2. nie jest'. Czy mógłby ktoś mnie oświecić dlaczego tak się nie dzieje? 2. Chciałem napisać skrypt sprawdzający czy dany string zawiera tylko liczy od 0 do 9. Jednak jeśli poniżej zmienna $a ma więcej niż 12 znaków/cyfr, to zwraca false. Dlaczego tak się dzieje, skad ta magiczna granica 12 znaków.
Za wyjaśnienia wielkie dzięki Ten post edytował Jozjasz 22.04.2013, 22:05:53 |
|
|
22.04.2013, 21:55:46
Post
#2
|
|
Grupa: Zarejestrowani Postów: 658 Pomógł: 95 Dołączył: 20.12.2005 Skąd: N54,35° E18,63° (Gdańsk) Ostrzeżenie: (0%) |
1) Zapytałeś tylko czy ma 3 znaki "aaa" w stringu.
Poprawnie powinno być to tak:
2)
Ten post edytował b4x 22.04.2013, 22:25:35 -------------------- |
|
|
22.04.2013, 22:14:39
Post
#3
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 11.09.2009 Ostrzeżenie: (0%) |
dzieki
Ale w drugim, ten mój skrtyp w momencie przekroczenia 12 cyfr zwraca FALSE. Gdy jest mniej cyfr zwraca TRUE. Ja chciałem napisać skrypt, który bedzie sprawdzał czy dany string zkłada się tyko i wyłącznie z cyfr od 0 do 9. Nic więcej. Ale właśnie jak $a ma więcej niż 12 cyfr to zwraca FALSE. A tak przecież nie powinno być! Dlaczego tak sie dzieje? ? |
|
|
22.04.2013, 22:20:23
Post
#4
|
|
Grupa: Zarejestrowani Postów: 658 Pomógł: 95 Dołączył: 20.12.2005 Skąd: N54,35° E18,63° (Gdańsk) Ostrzeżenie: (0%) |
Wszystko zależy od tego, czy Twój komputer jest 32bit lub 64bit. 32-bitowy system może przetwarzać int od -2147483648 do 2147483648, natomiast 64-bitowy -9223372036854775807 do 9223372036854775807. U mnie na OSX na localu (64-bit) - do 9223372036854775807 ładnie chodzi Ten post edytował b4x 22.04.2013, 22:23:34 -------------------- |
|
|
22.04.2013, 22:25:57
Post
#5
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 11.09.2009 Ostrzeżenie: (0%) |
dzięki, ale nie kapuję.
Ja chcę naspisać skrypt sprawdzający czy skrypt zkłada się tylko z cyfr. Tylko o to mi chodzi. Mój problem polega na tym, że jak sprawdzany string przekroczy 12 znaków to zwacane jest FALSE. A nie powinno tak być, ponieważ string skłądający się z 20 znaków(cyfr) przykładowo, dalej składa się z cyfr. Ten post edytował Jozjasz 22.04.2013, 22:26:57 |
|
|
22.04.2013, 22:30:16
Post
#6
|
|
Grupa: Zarejestrowani Postów: 658 Pomógł: 95 Dołączył: 20.12.2005 Skąd: N54,35° E18,63° (Gdańsk) Ostrzeżenie: (0%) |
Cytat The size of an integer is platform-dependent, although a maximum value of about two billion is the usual value (that's 32 bits signed). 64-bit platforms usually have a maximum value of about 9E18. PHP does not support unsigned integers. Integer size can be determined using the constant PHP_INT_SIZE, and maximum value using the constant PHP_INT_MAX since PHP 4.4.0 and PHP 5.0.5. # W Twoim przypadku wygląda że jesteś na 32 bit - masz wyjście - integer dać do stringa. :-) Czyli: $a = '790900088190'; Ten post edytował b4x 22.04.2013, 22:32:14 -------------------- |
|
|
22.04.2013, 22:32:44
Post
#7
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 11.09.2009 Ostrzeżenie: (0%) |
no ok, ale to jak poprawić mój skrypt - na taki który weryfikowałby czy dany skrypt składa się wyłącznie z cyfr (a nie np. z liter)
|
|
|
22.04.2013, 22:33:43
Post
#8
|
|
Grupa: Zarejestrowani Postów: 658 Pomógł: 95 Dołączył: 20.12.2005 Skąd: N54,35° E18,63° (Gdańsk) Ostrzeżenie: (0%) |
I będzie ok... Aaaa jeszcze możesz użyć ctype_digit Ten post edytował b4x 22.04.2013, 22:46:41 -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 16:06 |