Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
cinio
Mam np. takie coś:

  1. <?php
  2. $tekst = 'to jest 15 orzech, a to 20 jabłko';
  3. $wzor = '#jest(.*?)orzech#';
  4.  
  5. preg_match($wzor, $tekst, $wynik); 
  6. echo $wynik[1];
  7. ?>


Czy moge jakoś połączyć lub utworzyć jakoś inny wzór, by móc jednocześnie wyciągnąć z tekstu ile jest orzechów i jabłek, czy musze napisać funckje preg_match podspodem jeszcze raz z nowym wzorem?
bim2
  1. <?
  2. $tekst = 'to jest 45 orzech, a to jest 20 jabłko';
  3. $wzor = '/jest[s]([0-9]+)(?:.*?)/';
  4.  
  5. preg_match_all($wzor, $tekst, $wynik); 
  6. unset($wynik[0]);
  7. $wynik=$wynik[1];
  8.  
  9. print_r($wynik);
  10. ?>
wyciaga kolejne liczby a jesli chcesz tlyko orzech i jabłko to:
  1. <?php
  2.  
  3. $tekst = 'to jest 45 orzech, a to jest 20 jabłko';
  4. $wzor = '/jest[s]([0-9]+)[s](orzech|jabłko?)/';
  5.  
  6. preg_match_all($wzor, $tekst, $wynik); 
  7.  
  8. foreach($wynik[1] AS $key => $w)
  9. {
  10. $t[$wynik[2][$key]]=$w;
  11. }
  12.  
  13. print_r($t);
  14.  
  15. ?>
cinio
działa smile.gif
Tylko nie dokładnie chodziło mi o to.
Czasami będą mi potrzebne zarówno znalezienie zarówno cyfr jak i liter, ale w tym wypadku starczy zmienić [0-9] na \w

Co zrobić jeżeli zarówno początek i koniec wzoru będzie inny? Próbowałem coś takie wymodzić ale chodzi na odwrót od zamierzonego celu.
  1. <?php
  2.  
  3. $tekst = 'Pierwszego gola strzelił Crespo natomiast drugiego Rodriguez podczas meczu Argen
    tyna - Meksyk'
    ;
  4. $wzor = '/(strzelił|drugiego)[s](w+)[s](natomiast|podczas?)/';
  5.  
  6. preg_match_all($wzor, $tekst, $wynik); 
  7.  
  8. foreach($wynik[1] AS $key => $w)
  9. {
  10. $t[$wynik[2][$key]]=$w;
  11. }
  12.  
  13. print_r($t);
  14. ?>

Oczywiście nazwiska piłkarzy są zmienne.
Jeszcze jakby się dało żeby podczas wywołania jakieś zmiennej tablicowej pokazywała się odrazy wartosć zamiast np. takiego czegoś:
Array ( [Crespo] => strzelił [Rodriguez] => drugiego )
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.