Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrażenie regularne
Forum PHP.pl > Forum > PHP
karolm
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?
viking
explode() i sprawdzasz człony.
trzczy
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
karolm
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))$

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.