Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przewidywanie w regularnych
adamantd
post
Post #1





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


Witam
przeszukałem trochę internet i nie mogę znaleźć konkretnego rozwiązania a jest ono za pewne bardzo proste i nie będzie stanowiło dla Was wyjadaczy starych PHP-owców żadnego problemu.
  1.  
  2. preg_match("/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,80}$/", $pass);
  3.  
  4.  
  5.  


(nie jest to moja funkcja)
hasło od 8 - 80 znaków w tym przynajmniej jedna wielka litera i przynajmniej jedna cyfra ponieważ użyte tutaj zostało przewidywanie (którego do końca nie rozumiem)

potrzebuję sprawdzać hasło w którym są przynajmniej 2 duże litery i dwie cyfry (znak specjalny może być ale nie musi)

kombinowałem tak

  1.  
  2.  
  3. if(preg_match("/^[\w\.\-]*[A-Z]{2,}[0-9]{2,}$/", $pass)){
  4.  
  5. if(strlen($pass) >= 8 && strlen($pass) <= 80)
  6. return true;
  7. else
  8. return false;
  9.  
  10. } else {
  11. return false;
  12. }
  13.  
  14.  
  15.  


tu wszystko działa pod warunkiem, że dopasowania są spełniane po kolei a ja chcę, żeby w haśle duże litery lub cyfry były w obojętnie którym miejscu a nie np na końcu.

a więc próbowałem tak

  1.  
  2. preg_match("/^(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[0-9]{2,}).{8,80}$/", $pass);
  3.  
  4.  
  5.  


oczywiście ten ostatni przykład nie działa tak jak powinien

jeżeli macie linka do szczegółowego opisu zagadnienia albo możecie mi to wytłumaczyć to z góry dziękuję
pozdo

p.s. -nie zależy mi na gotowcu raczej na wytłumaczeniu, żebym zrozumiał

Ten post edytował adamantd 15.08.2012, 12:37:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adamantd
post
Post #2





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


mogę wcześniej oczyścić z polskich znaków np

  1.  
  2. $entered_pass = strtr($entered_pass, 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');
  3.  
  4.  
  5.  


(IMG:style_emoticons/default/biggrin.gif)

wtedy bez względu czy ktoś użyje ą czy a i tak parser przepuści


piszę w ISO-8859-2 bo z utf-8 wiecznie mam jakiś problem

I tutaj dwie sprzeczne informacje
wikibooks:
Do porównywania wzorca z ciągiem służy funkcja preg_match(), która zwraca ilość wystąpień ciągu według podanego wzorca.

http://www.gajdaw.pl/php
Wynikiem funkcji jest zawsze liczba 0 lub 1, która informuje o tym, czy podane wyrażenie zostało odnalezione.

jeżeli mam hasło:
  1.  
  2. $pass = 'mareczekRTE426kupa';
  3.  
  4. echo preg_match("/[A-Z]/", $pass, $m);
  5.  
  6. print_r($m);
  7.  


to funkcja preg_match zwróci wartość 1

a w tablicy $m będzie jedynie R

dlaczego funkcja nie zwraca ilości wystąpień wzorca w stringu?
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 22:51