Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rozbicie stringu wg. cyfr
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Macie pomysł jak rozbić string po cyfrach? NP:
  1. <?php
  2. $string="literki4costam";
  3. ?>
Chodzi mi o to aby uzyskać taki efekt jak:
  1. <?php
  2. $string=explode($string,"4");
  3. ?>
Ale dla zmieniających się wartości stringu. Np aby ze stringu:
  1. <?php
  2. $string="lala59xxx321zzz";
  3. //otrzymać $string[0]="lala" , $string[1]="xxx" , $string[2]="zzz"
  4. ?>

Macie pomysł jak to zrobić? Bo separator będzie zawsze zmienny.
ayeo
Witam!
Kurde, hehe. Wyciągnij najpierw cyfry (regexp) i zamień je na (przykład) @$#!, a potem zrób explode, a jako klej to @$#! biggrin.gif Lekki hack, ale powinno dzałać po pewnych modyfikacjach. Wydaje mi się, że pojedynczy regexp tego nie ogranie, ale już nie raz się zdziwiłem biggrin.gif
Pozdrawiam!
PS Pewnie się nie obejdzie bez preg_replace_callback(); winksmiley.jpg
Wicepsik
Zrobiłem prostą funkcje.

  1. <?php
  2. $string="lala59xxx321zzz";
  3.  
  4. function explod($string){
  5.  
  6.    if(!preg_match('/([0-9]+)/', $string)){
  7.        return false;
  8.    }else{
  9.    
  10.        preg_match_all('/([0-9]+)/', $string, $result);
  11.        foreach($result[1] as $value){
  12.            $string = str_replace($value, '|', $string);
  13.        }
  14.        
  15.     return explode('|', $string);
  16.    }
  17.  
  18.  
  19.  
  20. }
  21. echo '<pre>';
  22. print_r(explod($string));
  23. ?>
ayeo
Witam!

Wydaje mi się, że nie o to chodziło. Jednak użycie preg_match z ^, a potem str_replace() tego co znajdziemy na pustego stringa i powtórzenie tego cyku do końca może dać dobre wyniki biggrin.gif

Pozdrawiam!
Wicepsik
Mi się wydaję że o to chodziło, bo z tego stringa mi coś takiego wyszło

Kod
Array
(
    [0] => lala
    [1] => xxx
    [2] => zzz
)
ayeo
Witam!

O masakra! Ja myślałem, że potrzebne się też cyfry! Jak tylko literki to:
  1. <?php
  2. $pattern = "#[a-z].*#";
  3. $preg_match_all( $pattern, $string, $result );
  4. var_dump( $result );
  5. ?>


Pozdrawiam!
sadistic_son
Wicepsik - w 99,9% to mi pomogło, dzięki wielkie:) Jeszcze tylko muszę się zabezpieczyć przed stringiem w którym nie ma żadnej cyfry lub jest tylko jedna na końcu, ale to juz sobie poradzę.
Dzięki.

ayeo, Twoj skrypt nie za bardzo działa tak jak powinien, pomijając mały błędzik w składni. Nie zwraca on tego samego co explod(); Wicepsika.
ayeo
Witam!

Się czepiasz. Pisane z palca było tongue.gif

  1. <?php
  2. $string="literki4costam";
  3. $pattern = "#[a-z]+#";
  4. preg_match_all( $pattern, $string, $result );
  5. var_dump( $result[0] );
  6. ?>


Pozdrawiam!
Wicepsik
Trzeba się nauczyć lepiej wyrażeń regularnych. ayeo twój sposób jest lepszy... winksmiley.jpg
sadistic_son
Oba sposoby są ok choć ayeo krótszy. Dzięki Panowie.
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.