Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] preg_replace(), wyrazenie regularne
Cezar708
post
Post #1





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Witam.

potrzebuje wyrazenia regularnego, które przepusci mi takie stringi, ktore skladaja sie z DOWOLNEJ liczby TAKICH SAMYCH znakow:

np przepuscilby:
'aaaaaaaa'
'bb'
'@@@@@@@@@@@@@@@@@@@@@'
etc

a nie przepusiclby:
'asaasasssaas'
'bbbbBB'
'@###@#####@#!'
'nny string'

czy wiecie jakie wyrażenie regularne zalatwiłoby problem?

PS:
wiem, że mógłbym po prostu sprawdzać w ten sposób:
  1. <?php
  2. $is_matched = true;
  3. $string = 'aaaaa';
  4. for ( $i=0; $<strlen($i)-1; $i++){
  5. if ( $string{$i} != $string{$i+1} ){
  6. $is_matched = false;
  7. break;
  8. }
  9. }
  10.  
  11. if ($is_matched){
  12. echo 'w stringu wszystkie znaki sa takie same';
  13. } else {
  14. echo 'w stringu NIE wszystkie znaki sa takie same';
  15. }
  16. ?>


ale mi KONIECZNIE chodzi o wyrażenie regularne, które by mi to sprawdzało, czyli takie, co mógłbym użyć funkcji preg_match()

Ten post edytował Cezar708 18.05.2007, 12:23:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
kubarek
post
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 19.02.2007

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


może coś takiego:
  1. <?php
  2. $string='aaaaaaa';
  3. //pobierz pierwsza litere ze stringa
  4. $l=$string[0];
  5. preg_match('#(['.$l.']+)#', $string);
  6.  
  7. //w tym przypadku bedzie: preg_match('#([a]+)#', $string);
  8. //co dopasuje stringa skladajacego sie tylko ze znakow a ( jeden lub wiecej razy )
  9. ?>


--------------------
// ...
Co nieco o mnie ;)
Go to the top of the page
+Quote Post
Cezar708
post
Post #3





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


pomysł wydawał sie dobry, ale...

... po sprawdzeniu:
  1. <?php
  2. $string='aaaaa';
  3. //pobierz pierwsza litere ze stringa
  4. $l=$string[0];
  5. var_dump(preg_match('#(['.$l.']+)#', $string));
  6. ?>


OUTPUT:
Kod
int(1)


  1. <?php
  2. $string='rozne znaki';
  3. //pobierz pierwsza litere ze stringa
  4. $l=$string[0];
  5. var_dump(preg_match('#(['.$l.']+)#', $string));
  6. ?>


OUTPUT:
Kod
int(1)


czyli w obu przypadkach daje ten sam wynik, ale idea jest dobra więc tędy będę szukał rozwiązania
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. <?php
  2. $string = 'rozne znaki';
  3.  
  4. print preg_match ('#([^' . $string[0] . ']+)#', $string);
  5. ?>


Zwróci 1 (true) gdy znaki będą różne, jeśli takie same 0 (false), ale jeszcze sprawdź bo z palca pisane.

EDIT: mylisz preg_replace" title="Zobacz w manualu PHP" target="_manual z preg_match" title="Zobacz w manualu PHP" target="_manual.

Ten post edytował webdicepl 18.05.2007, 18:25:47
Go to the top of the page
+Quote Post
Kicok
post
Post #5





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


  1. <?php
  2.  
  3. $string1='aaaaaaaaaa';
  4. $string2='rozne znaki';
  5.  
  6. $l1=$string1[0];
  7. $l2=$string2[0];
  8. var_dump( preg_match( '#^[' . preg_quote($l1, '#') . ']+$#', $string1 ) );
  9. var_dump( preg_match( '#^[' . preg_quote($l2, '#') . ']+$#', $string2 ) );
  10.  
  11. ?>


Ten post edytował Kicok 18.05.2007, 19:01:12


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
Cezar708
post
Post #6





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Sposób Kicoka okazał się skuteczny, wielkie dzięki
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 - 15:07