Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match
Forum PHP.pl > Forum > Przedszkole
MoD
Mam problem.

Mam kod
  1. <?php
  2. while ( $includes[] = preg_match( '/{includes\"(.+)\"}/', $this -> tpl ) )
  3. {
  4. $var++;
  5. }
  6.  
  7. for ( $i=0; $i<=count($includes); $i++ )
  8. {
  9. $file = $this -> IncludeFile( $includes[$i] );
  10.  
  11. $this -> tpl = str_replace( '{include \"'.$includes[$i].'\"}', $file, $this -> tpl );
  12. }
  13.  
  14. unset( $includes );
  15. unset( $var );
  16. ?>

i wyskakuje mi błąd
Kod
Fatal error: Maximum execution time of 120 seconds exceeded in c:\usr\krasnal\www\folder\plik.php on line 127

Linia 127 to
  1. <?php
  2. while ( $includes[] = preg_match( '/{includes\"(.+)\"}/', $this -> tpl ) )
  3. ?>

Czy wie ktoś może, jak naprawić ten błąd? Z góry dziękuję za pomoc.
goped
sorka, ale chcialem poprosic o naprowadzenie mnie do manuala na trop co to jest: "->", dzieki
chfast
Pętla while wykonuje się w nieskończoność ponieważ funkcja preg_match zawsze znajdzie szukany wzór.

Poza tym masz kilka poważnych błędów:
1 . Musisz użyć funkcji preg_match_all" title="Zobacz w manualu PHP" target="_manual a nie preg_match. Ta pierwsza znajdzie wszystkie pasujące elementy, druga tylko jeden i skończy szykanie.
2. Funkcje preg_match* nie zwracają znalezionych elementów, tylko zapisują je w trzecim opcjonalnym argumencie. Musisz koniecznie poczytać manual lub jakiś polski opis stosowania funkcji do wyrażeń regularnych (np. na php5.pl albo skorzystaj z wyszukiwary).

Postaraj się sam to poprawić, jak będziesz miał problemy to ci pomoge.

@goped: Wszystko przez te klasy.
goped
cholera, nie moge zrozumiec co to ma robic sad.gif, moze mi ktos wytlumaczyc?
kicaj
Cytat(goped @ 2004-09-11 21:39:38)
cholera, nie moge zrozumiec co to ma robic sad.gif, moze mi ktos wytlumaczyc?

Nie pisz tutaj, raczej poczytaj o klasach, a bedziesz wiedzial o -> tongue.gif
MoD
Zrobiłem z preg_match_all, dostałem wynik (wypisany przez print_r):
Kod
Array ( [0] => Array ( [0] => {include "menu.html"} ) [1] => Array ( [0] => menu.html ) )
Mnie interesuje tylko te "menu.html" jak wyciągnąć tylko to??
chfast
A wiesz chociaż dlaczego taki wynik?
Robisz tak:
  1. <?php
  2.  preg_match_all( $pattern, $tpl, $wyniki );
  3. $wyniki = $wyniki[1];
  4. ?>
Teraz wszystkie znalezione strony masz w tablicy $wyniki.
MoD
Dzięki! Teraz już działa. Jeszcze raz dziękuję smile.gif
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.