Mam taki oto problem że regex zwraca "true" gdy podany string w części pasuje do innego wzorca. A powinno być tak że pod uwagę jest brany string tylko jako całość.
Przykład:
Mam trzy wzorce do których następuje sprawdzanie. Te wzorce to wzorce akceptowalnych adresów url.
$patterns = [ 'users', 'users/?, 'users/?/level/?' ]
Pytajniki to placeholdery dla liczb.
I teraz kod sprawdzający.
Najpierw wybrane znaki zamieniam na te rozumiane przez regEx.
Potem tworzę już gotowego RegExa.
foreach ($patterns as $patt){ $regEx = "/^$urlReg$/i"; }
I teraz najważniejsze:
Dla urla 'users' zwraca mi true dla pierwszego wzoru. POPRAWNIE
Dla urla typu 'users/4' zwraca mi true dla drugiego wzoru. POPRAWNIE
Dla urla typu 'users/4/level/1' zwarca mi true dla drugiego i trzeciego wzoru. ŹLE Powinno zwrócić true tylko dla trzeciego wzoru.
Co jest nie tak? Dlaczego zwraca mi dwa razy true?
A po drugie dlaczego nie zwraca true dla trzech wzorów? Chyba tak powinno byś jeśli regEx nie działa poprawnie?
I po trzecie, dlaczego dla przypadku drugiego urla nie zwracami true dla dwóch pierwszych wzorów?
Bardzo proszę o pomoc co jest źle i jak to naprawić.
Z góry dziękuję.