Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyrażenie regularne
karolm
post 6.09.2017, 22:37:47
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.09.2017
Skąd: Chojnice

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


Potrzebuję sprawdzać poprawność ciągu znaków które do skryptu będę dostawał w zmiennej $_GET np. 100!100!100
to będą 3 liczby rozdzielone wykrzyknikiem:
pierwsza liczba z zakresu 0-180 (możliwe 1 miejsce po kropce np. 50.3)
druga liczba z zakresu 0-360 (możliwe 1 miejsce po kropce np. 350.3)
trzecia liczba z zakresu -90 do 90 (możliwe 1 miejsce po kropce np. 0.3)

czy jest ktoś w stanie napisać mi jak powinno wyglądać wyrażenie regularne do sprawdzenie poprawności?
Go to the top of the page
+Quote Post
viking
post 7.09.2017, 05:59:28
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


explode() i sprawdzasz człony.


--------------------
Go to the top of the page
+Quote Post
trzczy
post 7.09.2017, 05:59:35
Post #3





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Chyba coś takiego
  1. ^(?:(?:(?:(?:[0-9]|[1-9][0-9]|1[0-7][0-9]))|(?:(?:[0-9]|[1-9][0-9]|1[0-7][0-9])\.\d)|180)!(?:(?:(?:[0-9]|[1-9][0-9]|[1-3][0-5][0-9]))|(?:(?:[0-9]|[1-9][0-9]|[1-3][0-5][0-9])\.\d)|360)!-?(?:(?:(?:[0-8]|[1-8][0-9]))|(?:(?:[0-9]|[1-8][0-9])\.\d)|90))$

https://regex101.com/r/VUrFe3/6


I można jeszcze zapewnić dostęp z poziomu regexa

  1. <?php
  2. $pattern='^(?:(?<a>(?:(?:[0-9]|[1-9][0-9]|1[0-7][0-9]))|(?:(?:[0-9]|[1-9][0-9]|1[0-7][0-9])\.\d)|180)!(?<b>(?:(?:[0-9]|[1-9][0-9]|[1-3][0-5][0-9]))|(?:(?:[0-9]|[1-9][0-9]|[1-3][0-5][0-9])\.\d)|360)!(?<c>-?(?:(?:(?:[0-8]|[1-8][0-9]))|(?:(?:[0-9]|[1-8][0-9])\.\d)|90)))$';
  3. $subject='123!360!-12.3';
  4. preg_match('/' . $pattern . '/', $subject, $array);
  5. if(!empty($array)) var_dump($array['a'], $array['b'], $array['c']);
  6. //string(3) "123"
  7. //string(3) "360"
  8. //string(5) "-12.3"


https://3v4l.org/Ojrqd

Ten post edytował trzczy 7.09.2017, 10:41:41
Go to the top of the page
+Quote Post
karolm
post 7.09.2017, 11:05:07
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.09.2017
Skąd: Chojnice

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


Super, działa idealnie, wielkie dzięki :-)




Cytat(trzczy @ 7.09.2017, 06:59:35 ) *
Chyba coś takiego
  1. ^(?:(?:(?:(?:[0-9]|[1-9][0-9]|1[0-7][0-9]))|(?:(?:[0-9]|[1-9][0-9]|1[0-7][0-9])\.\d)|180)!(?:(?:(?:[0-9]|[1-9][0-9]|[1-3][0-5][0-9]))|(?:(?:[0-9]|[1-9][0-9]|[1-3][0-5][0-9])\.\d)|360)!-?(?:(?:(?:[0-8]|[1-8][0-9]))|(?:(?:[0-9]|[1-8][0-9])\.\d)|90))$

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: 16.06.2025 - 23:17