Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mikser treści - problem z wielokrotnym zagnieżdżeniem losowanej treści
malvor
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.12.2013

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


Hej,
Mam pewien problem z miksowaniem treści. Mianowicie użytkownik ma pewien formularz, który po wypełnieniu generuje mi treść o następującej treści:

{Masz na imie|Nazywasz się} [pole_imie]. {Na tej stronie {znajdziesz|możesz odnaleźć}|Witryna oferuje} treści związane z {ogłoszeniami|{informacjami|{wiadomościami}} z Twojej okolicy, co pokrywa się z Twoimi preferencjami...

Tagi pomiędzy {} są wpisywane przez administratora, natomiast [] to pola z formularza. Nie miałbym problemu z parsowaniem czegoś takiego, gdyby nie fakt, że potrzebne są wielokrotne zagnieżdżenia. Próbuję od kilku godzin stworzyć działającą funkcję rekurencyjną do obsługi tego.

Jest ktoś w stanie poradzić coś w tym temacie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
malvor
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.12.2013

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


Wyrażenie jest całkiem niezłe, wielkie dzięki. Ale mam kolejny problem, w jaki sposób teraz robić to na odpowiednie klamry. Ponieważ obecnie działa to tak, że jeśli mamy
{Zapraszamy do|Wszystkich Państwa zachęcamy do {odwiedzenia|zapoznania się z ofertą}} warsztatu [nazwa] {znajdującego się|z siedzibą} w mieście [miasto]
To dla pierwszego zagnieżdżenia działa prawidłowo, niestety dla drugiego ({znajdującego się|z siedzibą}) pobiera nam elementy z pierwszego ({odwiedzenia|zapoznania się z ofertą})

Ok rozwiązane. Gdyby ktoś kiedyś potrzebował:

  1. while( strpos($tekst, '}') )
  2. {
  3. preg_match('/{([^{]+?)}/', $tekst, $matches);
  4. $tablica = explode('|',$matches[1]);
  5. $tekst = str_replace($matches[0], $tablica[array_rand($tablica)] , $tekst);
  6. }


Ten post edytował malvor 31.12.2013, 14:33:01
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 08:30