Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] liczba znaków w zmiennych
Gordon1x
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 13.06.2007

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


Jak sprawdzić czy w zmiennej znajduje się 5 lub 6 znaków, ponieważ dopuszczalny jest zapis 12-345 lub 12345. Oraz jak sprawdzić czy znaki w zmiennej są liczbami.

  1. <?php
  2. $zmienna1= "12-345";
  3. $zmienna2 = "12345";
  4. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
UDAT
post
Post #2





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

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


Użyj strlen" title="Zobacz w manualu PHP" target="_manual do sprawdzenia długości.
Do sprawdzenia czy coś jest cyfrą możesz wykorzystać ctype_digit" title="Zobacz w manualu PHP" target="_manual, wyrażeń regularnych lub prostego testu:
  1. <?php
  2. function isDigit ( $val ) {
  3.  return (strval(intval($val)) == $val);
  4. }
  5. ?>
Go to the top of the page
+Quote Post
tiraeth
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


  1. <?php
  2. function ispostcode($zmienna) {
  3.  if ( strlen($zmienna) < 7 && strlen($zmienna) > 4 ) {
  4. $zmienna = str_replace('-', '', $zmienna);
  5. if ( $zmienna == (int)$zmienna ) {
  6.  return true;
  7. } else {
  8.  return false;
  9. }
  10.  } else {
  11. return false;
  12.  }
  13. }
  14. ?>


Rozwiązanie łopatologiczne...
Powód edycji: Poprawienie instrukcji warunkowej
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




A może ereg" title="Zobacz w manualu PHP" target="_manual? Chyba najpewniejsze rozwiązanie...
  1. ^[0-9]{2}-?[0-9]{3}$
Go to the top of the page
+Quote Post
UDAT
post
Post #5





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

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


Cytat(tiraeth @ 10.08.2007, 11:48:40 ) *
Rozwiązanie łopatologiczne...


Niestety twoje rozwiązanie nie zadziała.

Działanie funkcji is_int" title="Zobacz w manualu PHP" target="_manual nie polega na sprawdzeniu czy zmienna jest liczbą, tylko sprawdza ustawiony wewnętrznie typ zmiennej, dlatego jeśli $zmienna na wejściu jest stringiem, to zawsze twoja funkcja zwróci false.

Popraw mnie jeśli się mylę.
Go to the top of the page
+Quote Post
tiraeth
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Cytat(UDAT @ 10.08.2007, 12:53:02 ) *
Niestety twoje rozwiązanie nie zadziała.

Działanie funkcji is_int" title="Zobacz w manualu PHP" target="_manual nie polega na sprawdzeniu czy zmienna jest liczbą, tylko sprawdza ustawiony wewnętrznie typ zmiennej, dlatego jeśli $zmienna na wejściu jest stringiem, to zawsze twoja funkcja zwróci false.

Popraw mnie jeśli się mylę.


Po części się mylisz.
  1. <?php
  2. $s = 'bla';
  3. $s = 1;
  4. echo is_int($s); // Returns 1
  5. ?>


Natomiast faktycznie, w tym przypadku nie mamy 12345 tylko '12345', więc string.

Poprawiłem instrukcję warunkową: if ( $string == (int)$string )
Go to the top of the page
+Quote Post
UDAT
post
Post #7





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

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


Niestety nic to nie dało.
  1. <?phpvar_dump ( ispostcode('-----')); //zwraca bool(true) choć nie do końca jest to dopuszczalny zapis?>



Spowodowane jest to tym, że PHP gdy porównuje int'a ze stringiem rzutuje stringa na inta

Ten post edytował UDAT 10.08.2007, 12:08:45
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: 23.08.2025 - 18:49