Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wzorcami w preg_match()
Forum PHP.pl > Forum > PHP
SaMi
Witam,
Problem pojawia się gdy do funkcji preg_match zaczynam podstawać wzorce pobrane z talicy, wartość wzorca podana jako pierwsza do funkcji preg_match zostaje jak by zapamiętana. Pomimo podania innej wartości wzorca, warunek jest sprawdzany dla wartości podanej na samym początku a nie tej ostatniej. Z czego to wynika i jak to ominać?
Mam nadzieję że dość zrozumiale opisałem problem. Niżej poglądowy przykład:

  1. public $content = array();//jakaś tablica zawierająca np. wiersze pliku txt
  2.  
  3. public function get( $id_pattern=0)
  4. {
  5.  
  6. $patterns = array(
  7. '0'=>'[pattern1]',
  8. '1'=>'[pattern2]',
  9. '2'=>'[pattern3]'
  10. );
  11.  
  12.  
  13. if (count($patterns)>$id_pattern)
  14. {
  15. foreach($this->content as $c)
  16. {
  17. preg_match($patterns[$id_pattern], $c, $return);
  18.  
  19. if($return)
  20. {
  21. return $return;
  22. break;
  23. }
  24. else
  25. {
  26. if ($c == end($c))
  27. {
  28. $this->get(++$id_pattern);
  29. break;
  30. }
  31. }
  32. }
  33. }
  34.  
  35. }


Działa to albo powinno działać w ten sposób że jeśli w tablicy nie znajdzie niczego co pasuje do pierwszego wzorca to sprawdza dla kolejnego itd.
d3ut3r
  1. if ($c == end($c))


na

  1. if ($c == end($this->content))


Poza tym rekurencja to mechanizm do stosowania w naprawdę wyjątkowych okolicznościach, ponieważ jest dość zasobożerny a w tym przypadku wcale nie jest ona niezbędna.
SaMi
To nie to smile.gif w każdym razie walczę z tym.
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.