Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wycinanie ciągu znaków z ciągu znaków
Forum PHP.pl > Forum > Przedszkole
Athlan
chciałbym z poniżeszego tekstu:

Kod
435-345345-435345-435, 33443-34-3443-34-3443, 3434344334-34344-343-4, 885-354245-437545-455


wydzielić tylko te ciągi liczb, które odpowiadają wyrażeniu regularnemu:
Kod
^[0-9]{3}-([0-9]{6}-){2}[0-9]{3}$


w powyższym ciągu tylko 2 elementy spełniają powyższe wyrażenie... pierwszy i ostatni.
Chciałbym je po prostu wypisać z ciągu w następujący sposób:
Kod
435-345345-435345-435|885-354245-437545-455


i nie chodzi mi tutaj o takie coś:
  1. <?php
  2.  
  3. $string = "435-345345-435345-435, 33443-34-3443-34-3443, 3434344334-34344-343-4, 885-354245-437545-455";
  4. $array_from_string = explode(',', $string)
  5.  
  6. foreach($array_from_string as $element)
  7. {
  8. if(ereg("^[0-9]{3}-([0-9]{6}-){2}[0-9]{3}$", $element))
  9. {
  10. echo $element;
  11. }
  12. }
  13.  
  14. ?>


tylko, żeby wyciąć te stringi ze stringu biggrin.gif (dziwnie to brzmi O_o)

patrzyłem na funkcje preg_match_all(), preg_split(), ale tam moje wyrażeie zupełnie nie działa sad.gif

  1. <?php
  2.  
  3. $i = "435-345345-435345-435, 33443-34-3443-34-3443, 3434344334-34344-343-4, 885-354245-437545-455";
  4.  
  5. preg_match_all("^[0-9]{3}-([0-9]{6}-){2}[0-9]{3}$", $i, $wyciete, PREG_PATTERN_ORDER);
  6.  
  7. $array = $wyciete[1];
  8.  
  9. foreach($array as $element)
  10. {
  11. echo $element.'<br>';
  12. }
  13.  
  14. ?>


jak mam to zrobić?
siemakuba
  1. <?php
  2. $i = "435-345345-435345-435, 33443-34-3443-34-3443, 3434344334-34344-343-4, 885-354245-437545-455";
  3. preg_match_all("/[0-9]{3}-[0-9]{6}-[0-9]{6}-[0-9]{3}/", $i, $wyciete);
  4. print_r($wyciete);
  5. ?>


pozdr.
Athlan
działa... THX, to się nazywa flagi?
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.