Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> identyczne znaki w stringu
Indianin
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Hamburg / Darlowo

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


jJak sprawdzic czy string zawiera kilka identycznych znakow polozonych obok siebie (aaaaaby, zzzzzzzzz itp) .?

Ten post edytował Indianin 17.09.2004, 09:52:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


  1. <?php
  2.  
  3. if (preg_match('#(w)1+#', $tekst))
  4. {
  5.   // ..sa takie same znaki obok siebie..
  6. }
  7.  
  8. ?>

To zadziala dla liter, cyfr oraz znaku _


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Indianin
post
Post #3





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Hamburg / Darlowo

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


Perfect
Ale ... Masz moze pomysl jak to sprawdzic gdy jest wiecej niz dwa identyczne znaki . Chodzi o wyeliminiwanie glupawych nazw userow .
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Znaczy sie wiecej niz dwa takie same obok siebie ?
Jasne..
  1. <?php
  2.  
  3. if (preg_match('#(w)1{2,}#', $tekst))
  4. {
  5.   // ..sa conajmniej 3 takie same znaki obok siebie
  6. }
  7.  
  8. ?>


PS. to jest troche walka z wiatrakami, automatem wszystkiego nie sprawdzisz.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
scanner
post
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Jak to nie sprawdzisz wszystkiego?
Sam właśnie szukam rozwiązania, jak "skompresować" stringi pozbywając się nadmiarowych znaków.
jak na razie, w połtorej godziny po obudzeni się z dwu godzinego snu, wymyśliłem takiego potworka:

  1. <?php
  2. $sString = &#092;"heeellloooooo all :))))))) aaaaaaa77777777 ggggggggggg;;;\";
  3. $sPattern = '#(w)1{2,}#';
  4. if( preg_match($sPattern, $sString, $aFound ) )
  5. {
  6. do
  7. {
  8.  
  9. $sString = str_replace( $aFound[0], $aFound[1], $sString );
  10. }while (preg_match($sPattern, $sString, $aFound ) );
  11. }
  12. echo $sString.'<br />';
  13. ?>
Który wypluwa z siebie:
Cytat
helo all smile.gif)))))) a7 g ;;;

Jak widać, nie przegryza się przez nawiasy i średniki. Trzega by pattern wyedytować, tylko, ze ja się nie znam na RegExepach jeszcze smile.gif

Aha - pomijam kwestię wydajności (na razie).


=======================
Update:

  1. <?php
  2. /**
  3. * @return string
  4. * @param string $sString
  5. * @param int $iAllowedRepeats
  6. * @desc Kompresuje podany ciag znaków skracajac do jednego powtarzajace sie znak
  7. , np. 'aaa' => 'a'.Ilosc znakow dozwolonych (nieskracanych) podajemy jako drugi opcjonalny parametr.
  8. */
  9.  
  10. function compressText( $sString, $iAllowedRepeats = 2 )
  11. {
  12. $sPattern = '#([w|W])1{'.$iAllowedRepeats.',}#';
  13. if( preg_match($sPattern, $sString, $aFound ) )
  14. {
  15. do
  16. {
  17. $sString = str_replace( $aFound[0], $aFound[1], $sString );
  18. }while (preg_match($sPattern, $sString, $aFound ) );
  19. }
  20. return $sString;
  21. }
  22. ?>


Ten post edytował scanner 4.10.2004, 09:24:23


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:30