Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Operacja na zmiennej
ActivePlayer
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


Jak usunąć ze zmiennej wszystkie "\\xx" po znalezionym pierwszym "xx"

tzn.

jest
"BB//CC//AA//AA//CC"
i chcę zeby po znalezieniu pierwszego AA usunięto kazde następne czyli ma wyglądać tak:

"BB//CC//AA//CC"

jest ktos w stanie mi pomóc ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Oto przykładowe rozwiazanie twojego problemu
  1. <?
  2. function onlyOne( $sText , $sGlue = '/' )
  3. {
  4. $aDane = explode( $sGlue , $sText );
  5. if( empty( $aDane ) )
  6. {
  7. return false;
  8. }
  9. $iCount = count( $aDane );
  10.  
  11. $aList = array();
  12. $sWynik = '';
  13. for( $ii=0; $ii< $iCount; $ii++ )
  14. {
  15. if( isset( $aList[ $aDane[$ii] ] ) )
  16. {
  17. continue;
  18. }
  19.  
  20. $sWynik .= $aDane[$ii];
  21. $sWynik .= $sGlue ;
  22.  
  23. $aList[ $aDane[$ii] ] = true;
  24. }
  25.  
  26. return $sWynik; 
  27. }
  28.  
  29. $sText = 'aa/aa/bb/aa/cc/cc/aa/bb/bb';
  30. echo onlyOne( $sText ); // zwraca aa/bb/cc/
  31.  
  32. ?>


a to najprostrzy a na pewno działajacy kod rozwiązujacy problem o którym mówili moi przedmówcy (a dokładniej mpps ), tj. usuwaine wszystkich występujących wielokrotnie po sobie, lecz w jednym ciagu, wyrażeń.

  1. <?
  2. function noDuble( $sText , $sGlue = '/' )
  3. {
  4. $aDane = explode( $sGlue , $sText );
  5. if( empty( $aDane ) )
  6. {
  7. return false;
  8. }
  9. $iCount = count( $aDane );
  10.  
  11.  
  12. $sActual = '';
  13. $sWynik = '';
  14. for( $ii=0; $ii< $iCount; $ii++ )
  15. {
  16. if( $sActual == $aDane[$ii] )
  17. {
  18. continue;
  19. }
  20. $sWynik .= $aDane[$ii];
  21. $sWynik .= $sGlue ;
  22.  
  23. $sActual = $aDane[$ii];
  24. }
  25. return $sWynik;
  26. }
  27.  
  28.  
  29. $sText = 'aa/aa/bb/aa/cc/cc/aa/bb/bb';
  30. echo noDuble( $sText ); // zwraca aa/bb/aa/cc/aa/bb/
  31. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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: 28.12.2025 - 00:36