Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wykrycie kilku takich samych znaków w tekście
Szunaj85
post
Post #1





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Mam pytanie,
Jak wykryć kilka takich samych znaków występujących pod rząd w tekście/zmiennej za pomocą warunku?
Czyli żeby nie wykrywało max 2 znaków koło siebie, ale już 3 lub więcej tak.
Np.: "Ala ma kota", "Ala ma koota" nie będą brane pod uwagę, ale "Ala ma kooota", "Ala ma koooota" już tak.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
pyro
post
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  1. <?php
  2. // dla przykładu z "o"
  3.  
  4. $a = preg_match_all('|o{3,}|', $tekst, $found);
  5. ?>
Go to the top of the page
+Quote Post
Szunaj85
post
Post #3





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Cytat
Jak wykryć kilka takich samych znaków występujących pod rząd w tekście/zmiennej za pomocą warunku?
Czyli żeby nie wykrywało max 2 znaków koło siebie, ale już 3 lub więcej tak.
Np.: "Ala ma kota", "Ala ma koota" nie będą brane pod uwagę, ale "Ala ma kooota", "Ala ma koooota" już tak.
Nie wiem czy dobrze wytłumaczyłem problem. Chodzi mi o warunek (if). Jeżeli w polu treść nie znajdują się 3 takie same znaki koło siebie nic nie rób, w przeciwnym razie wyświetl komunikat.
  1. <?php
  2. if (...(..., $tresc)){
  3.  $tresc.='W treści znajdują się powtarzające się znaki';
  4.  }
  5. ?>
I chodzi o różne znaki. Litery, liczby, znaki interpunkcyjne, itd. W takim wypadku wystarczy chyba wpisać kropkę. Pyro próbowałem wzorować się na tym co napisałeś, ale nie chce mi działać prawidłowo. (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)

Ten post edytował Szunaj85 1.02.2009, 14:23:43
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Szczerze mówiąc, lepiej byłoby użyć sprawdzania pisowni, a nie wymyślać koło na nowo. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

A jeśli już usilnie chcesz, to skorzystaj z tego, co napisał ~pyro, ale użyj modyfikatora /e i korzystaj z tego np. tak:

  1. <?php
  2. function notify(){
  3.   throw new Exception();
  4. }
  5.  
  6. try{
  7.  
  8.   for($a=97;$a<=122;$a++){
  9.      preg_replace('|'.chr($a).'{3,}|ie', 'notify()', $str);
  10.   }
  11.  
  12. }catch(Exception $ex){
  13.   // buuuu!
  14. }
  15. ?>

Ostrzegam, pisane z palca.
Go to the top of the page
+Quote Post
230005
post
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Od sprawdzania tekstu w taki sposób na jakim ci zależy są wyrażenia regularne i to jest właśnie to co koledzy wyżej napisali :] .
Go to the top of the page
+Quote Post
Szunaj85
post
Post #6





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


erix dopisałem pare linijek kodu żeby wyświetlał komunikat. To wyrażenie regularne działa, ale zauważyłem, że tylko na litery.
Jak napiszę cyfry czy znaki to już nie wyświetla mi komunikatu. Próbowałem określić grupę znaków w kodzie wyrażenia typu
[a-zA-Z0-9], [a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻ(inne znaki)], itp czy też prościej wpisać ('.') zastępujący każdy pojedynczy znak. Niestety nie działa albo mi coś nie wychodzi.
I jeszcze jedno.
Jakie znaczenie mają te liczby w pętli for? Do czego służą? (IMG:http://forum.php.pl/style_emoticons/default/co_jest.gif)
  1. <?php
  2. for($a=97;$a<=122;$a++){
  3. ?>
Swoją drogą z chęcią doczytam o wyrażeniach regularnych jak będę miał trochę czasu.
oraz
Co to za wyjątek ta zmienna $ex? (IMG:http://forum.php.pl/style_emoticons/default/co_jest.gif)
  1. <?php
  2. }catch(Exception $ex){
  3. ?>
Krótko mówiąc czego nie wiedziałem poczytałem, ale chciałbym dobrze zrozumieć ten kod. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
itp czy też prościej wpisać ('.') zastępujący każdy pojedynczy znak. Niestety nie działa albo mi coś nie wychodzi.

Nie prościej, gdyż wpisując kropkę będzie łapało trzy dowolne znaki, które mogą być różne.

Cytat
Jakie znaczenie mają te liczby w pętli for? Do czego służą?

Wikipedia: ASCII

Cytat
Krótko mówiąc czego nie wiedziałem poczytałem, ale chciałbym dobrze zrozumieć ten kod.

Skoro pytasz, jaki wyjątek, to nie doczytałeś. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Funkcja wywołana jako callback wypluwa wyjątek, a ten kod go łapie. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

~230005 - Twoja wypowiedź wniosła coś nowego do dyskusji?
Go to the top of the page
+Quote Post
Szunaj85
post
Post #8





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Erix, no teraz to ma ręce i nogi, już wszystko rozumiem i nawet nie muszę kombinować z ('.'). Chociaż raz (odkąd wiele razy odpisywałeś na moje pytania) mi pomogłeś. (IMG:http://forum.php.pl/style_emoticons/default/yahoo.gif)
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: 23.08.2025 - 20:33