• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

preg_match - wyrażenia regularne jako tablica

0 głosów
695 wizyt
pytanie zadane 17 września 2019 w PHP przez progNewbie Obywatel (1,130 p.)
Cześć,

Chciałbym sprawdzić poprawność wpisywanego kodu do formularza, prawidłowymi formatami są np.:

1.1 czyli [0-9].[0-9]

1.11 czyli [0-9].[0-9][0-9]

1.11.1 czyli [0-9].[0-9][0-9].[0-9]

i tak jeszcze z 10 warunków podobnych do tych co powyżej.

Czy da się użyć preg_match tak żeby wpisany w formularz string - kod był sprawdzany po wszystkich elementach (wyr. reg.) z takiej tablicy?

I jeśli uda mu się któryś dopasować to będzie się coś dalej działo?

2 odpowiedzi

+1 głos
odpowiedź 17 września 2019 przez Comandeer Guru (607,330 p.)
wybrane 17 września 2019 przez progNewbie
 
Najlepsza

To można załatwić na poziomie samego regexa, dzięki grupom:

<?php

$regex = '/([0-9].[0-9]|[0-9].[0-9][0-9]|[0-9].[0-9][0-9].[0-9])/';

$inputs = [
	'1.1',
	'1.11',
	'1.11.1'
];

foreach( $inputs as $input ) {
	$matches = [];
	preg_match( $regex, $input, $matches );
	var_dump( $matches );
}

Niemniej te warunki wydają się powtarzalne, więc myślę, że da się to zrobić prościej, np:

<?php

$regex = '/\d(\.\d{1,2})+/';

$inputs = [
	'1.1',
	'1.11',
	'1.11.1'
];

foreach( $inputs as $input ) {
	$matches = [];
	preg_match( $regex, $input, $matches );
	var_dump( $matches );
}

 

komentarz 17 września 2019 przez progNewbie Obywatel (1,130 p.)
Genialne.
0 głosów
odpowiedź 17 września 2019 przez progNewbie Obywatel (1,130 p.)

Napisałem już jakiś skrypt, ale czy to jest "ładny" sposób? Może ktoś podpowiedzieć, ew. nakierować?

<?php

$test = "1.1";
$test1 = "1";

$array = array("@^[0-9].[0-9]$@","@^[0-9].[0-9][0-9]$@");

foreach($array as $value){
    if(preg_match($value, $test) == 1){
        $napis = "ok";
        break;
    }else{
        $napis = "zle";
    }
}
echo $napis;

 

Podobne pytania

+1 głos
1 odpowiedź 196 wizyt
pytanie zadane 25 września 2016 w PHP przez benzulli Użytkownik (720 p.)
0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 14 grudnia 2017 w PHP przez White Cat Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 202 wizyt
pytanie zadane 11 czerwca 2016 w PHP przez MatiiTv Gaduła (3,800 p.)

93,607 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,097 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...