Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [preg] Znacznik {FOREACH
Forum PHP.pl > Forum > PHP
bim2
Mam:
  1. <?php
  2. $this->give=preg_replace_callback("/{FOREACH: *(.*?), (.*?)}(.*?){ENDFOREACH}/", 'fore', $this->give);
  3. function fore($match)
  4. {
  5. global $$match[1];
  6.  
  7.  
  8. foreach((array)$$match[1] AS $f_key => $$match[2])
  9. {
  10. $r .=str_replace('{F_KEY}', $f_key, str_replace('{'.$match[2].'}', $$match[2], $match[3]));
  11.  
  12. if(preg_match("/{FOREACH: *(.*?), (.*?)}(.*?){ENDFOREACH}/i", $r))
  13. {
  14. $r .=preg_replace_callback("/{FOREACH: *(.*?), (.*?)}(.*?){ENDFOREACH}/", 'fore', $r);
  15. }
  16. }
  17.  
  18.  
  19. return $r;
  20.  
  21. }
  22. ?>
Nie bede podawał funkcji bo wiem w czym tkwi problem a nie wiem jak go naprawic winksmiley.jpg. To tak, Jesli mam:
{FOREACH: info, f_inf}<br>{FOREACH: f_inf, F_VALUE}{F_VALUE}|<br>{ENDFOREACH}<br>{ENDFOREACH}
To pobierze pierwsze {ENDFOREACH} a srodkowe wyjdzie {FOREACH ...} Cyzli wyswietli sie kilka razy {FOREACH ...} (tyle ile tablic).

I teraz jak zrobić aby brało ostatnie zakończenie ENDFOREACH?

Pozdrawiam BIM
Athlan
teoretycznie on powinien wziąść zawartość foreacha, ale twój skrypt jest zbyt głupi, aby ogróżnić który FOREACH to który... moim zdaniem powinieneś nadawać jakieś ID każdemu z FOREACH i otwierający i zamykający mia.łby taką postać:

{FOREACH=1}sdicbksdbc{/FOREACH=1}

może coś takiego?
bim2
Super, w pewnym sensie dziala smile.gif Zrobilem tak:
  1. <?php
  2. $this->give=preg_replace_callback("/{FOREACH: *(.*?), (.*?)}(.*?){ENDFOREACH *1}/", 'fore', $this->give);
  3.  
  4. function fore($match)
  5. {
  6.  
  7. global $$match[1], $$match[2], $rs;
  8.  
  9. foreach($$match[1] AS $f_key => $$match[2])
  10. {
  11. $rs = str_replace('{'.$match[2].'}', $$match[2], $match[3]);
  12. $rs =str_replace('{F_KEY}', $f_key, $rs);
  13. $rs = str_replace('{a}', $al, $rs);
  14. $ret .= $rs;
  15. $al++;
  16.  
  17. }
  18.  
  19. if(preg_match("/{FOREACH: *(.*?), (.*?)}(.*?){ENDFOREACH *1}/", $ret))
  20. {
  21. $ret = preg_replace_callback("/{FOREACH: *(.*?), (.*?)}(.*?){ENDFOREACH *1}/", 'fore', $ret);
  22. } 
  23.  
  24. return $ret;
  25.  
  26. }
  27. ?>
I jak zagniezdam 2 foreacha:
{FOREACH: lal, f_inf}$inf[{F_KEY}]={f_inf}:<br>{FOREACH: f_inf, f_value}$inf[{F_KEY}]={f_value}:<br>{ENDFOREACH f_inf}{ENDFOREACH lal}
To przy drugim forreach robi ta samą wartośc. Pewnie zmienna sie nadpisuje. Tylko nieumiem tego obejsc smile.gif HELp ME, Jazwarijuje. Bendi moze ty coś poradzisz?

Boze jaki banal, przelozylem preg_matcha i replace do foreacha i dziala ;/ Buuu A ja godzine siedzialem sad.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.