Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawdzenie powtarzalności znaków w stringu
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witajcie
Znowu te nieszczęsne stringi mnie prześladują (IMG:style_emoticons/default/winksmiley.jpg) Napisałem dobry regex który znajduje tylko te na których mi zależy ale mam problem z jedna rzeczą i nie wiem jak ją zaimpletować (nie koniecznie w regex).
Chodzi o to że w stringu jedna cyfra lub litera nie może wystąpić kolejno więcej niż 4 razy, tzn. ciąg ABCDEFGHIJKLMNOUPRST jest poprawny ale ABCDEFGGGGGGHIJKLMNO już nie.
Nie potrafię ich jednak w jakiś sensowny i szybki sposób odfiltrować mając na uwadze że będzie analizowane blisko 100MB tekstu.

Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


może to Ci się przyda http://stackoverflow.com/questions/1637941...with-preg-match
Go to the top of the page
+Quote Post
kiler129
post
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Faktycznie, ciekawe rozwiązanie. Dla potomnych mały kod:

  1. function rchar($text, $nr=3) //$text - tekst do sprawdzenia, $nr - ile razy dozwolone powtórzenie. Zwraca true jeśli powtórzono nie więcej niż $nr razy lub false jeśli powtórzono więcej
  2. {
  3. if(!preg_match('/(.)'.str_repeat('\1', $nr).'/', $text)) { return true; } else { return false; }
  4. }
  5.  
  6. /*
  7.  Test:
  8.   $nr = 3
  9.   TEST => bool(true)
  10.   TEEST => bool(true)
  11.   TEEEST => bool(true)
  12.   TEEEEST => bool(false)
  13. */
Go to the top of the page
+Quote Post

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: 20.12.2025 - 04:26