Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] preg_replace()
Forum PHP.pl > Forum > Przedszkole
Cezar708
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()
kubarek
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. ?>
Cezar708
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
webdice
  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.
Kicok
  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. ?>
Cezar708
Sposób Kicoka okazał się skuteczny, wielkie dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.