Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]wyrażenia regularne, łączenie wzorców
cinio
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.01.2006

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


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?
Go to the top of the page
+Quote Post
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


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


Ten post edytował bim2 26.06.2006, 15:55:58


--------------------
Go to the top of the page
+Quote Post
cinio
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.01.2006

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


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 )

Ten post edytował cinio 27.06.2006, 09:10:34
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:52