Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Rozbicie stringu wg. cyfr
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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.

Ten post edytował sadistic_son 23.07.2009, 17:20:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
ayeo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!
Kurde, hehe. Wyciągnij najpierw cyfry (regexp) i zamień je na (przykład) @$#!, a potem zrób explode, a jako klej to @$#! (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Pozdrawiam!
PS Pewnie się nie obejdzie bez preg_replace_callback(); (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Wicepsik
post
Post #3





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


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. ?>


Ten post edytował Wicepsik 23.07.2009, 17:27:54
Go to the top of the page
+Quote Post
ayeo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Pozdrawiam!
Go to the top of the page
+Quote Post
Wicepsik
post
Post #5





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


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
)
Go to the top of the page
+Quote Post
ayeo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


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!
Go to the top of the page
+Quote Post
sadistic_son
post
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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.

Ten post edytował sadistic_son 23.07.2009, 17:42:27
Go to the top of the page
+Quote Post
ayeo
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!

Się czepiasz. Pisane z palca było (IMG:http://forum.php.pl/style_emoticons/default/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!
Go to the top of the page
+Quote Post
Wicepsik
post
Post #9





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Trzeba się nauczyć lepiej wyrażeń regularnych. ayeo twój sposób jest lepszy... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Wicepsik 23.07.2009, 17:49:12
Go to the top of the page
+Quote Post
sadistic_son
post
Post #10





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Oba sposoby są ok choć ayeo krótszy. Dzięki Panowie.
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: 22.08.2025 - 19:05