Mikser treści - problem z wielokrotnym zagnieżdżeniem losowanej treści |
Mikser treści - problem z wielokrotnym zagnieżdżeniem losowanej treści |
30.12.2013, 16:03:04
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? |
|
|
30.12.2013, 17:24:49
Post
#2
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) |
Wydaje mi się, że można to rozwiązać bez rekurencji, a mianowicie dane umieścić w tablicach i je ewentualnie zagnieżdżać.
W każdym razie mój pomysł rozwiązania wyglądałby mniej więcej tak: |
|
|
31.12.2013, 08:56:21
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 30.12.2013 Ostrzeżenie: (0%) |
No tak, ale w jaki sposób stworzyć taką tablice mając tak zagnieżdżony tekst wpisany przez użytkownika?
|
|
|
31.12.2013, 10:55:41
Post
#4
|
|
Grupa: Zarejestrowani Postów: 515 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) |
staram się zrozumieć problem, ale nie wiem co dokładnie masz na myśli.
co to znaczy miksowanie treści ? Co to za formularz/do czego ? najlepiej wklej kod i napisz dokładnie czego oczekujesz |
|
|
31.12.2013, 12:31:21
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 30.12.2013 Ostrzeżenie: (0%) |
Kodu na chwilę obecną nie mam (jestem w trakcie tworzenia). Chodzi dokładnie o opis warsztatu samochodowego. Gdy klient doda swój warsztat do bazy danych na podstawie szablonu zostanie wygenerowany jego opis. Aby opis nie był jednakowy dla wszystkich warsztatów należy go zmiksować. Administrator serwisu podaje szablon w postaci:
{Zapraszamy do|Wszystkich Państwa zachęcamy do {odwiedzenia|zapoznania się z ofertą}} warsztatu [nazwa] {znajdującego się|z siedzibą} w mieście [miasto] Co oznacza że z pierwszego nawiasu {} zostanie wybrana jedna z opcji (opcje oddzielone znakiem |): Zapraszamy do lub Wszystkich Państwa zachęcamy do {odwiedzenia|zapoznania się z ofertą} i tutaj mamy kolejne zagnieżdżenie możliwych do wylosowania elementów odwiedzenia lub zapoznania się z ofertą. tagi w nawiasach [] to pola które będą parsowane na podstawie danych pobranych z formularza uzupełnionego przez klienta. Od razu odpowiem na pytanie, musi być to skrypt idioto odporny i generować treść z wieloma zagnieżdżeniami np. {Opcja 1|Opcja 2|{Opcja 3.1|Opcja 3.2|{Opcja 3.3.1|Opcja 3.3.2}}|Opcja 4} itd. Dlatego rozwiązanie Wazniak96 nie wchodzi w grę. |
|
|
31.12.2013, 12:52:08
Post
#6
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 56 Dołączył: 3.06.2010 Skąd: Tarnowskie Góry Ostrzeżenie: (0%) |
To wyrażenie powinno znaleźć ci najbardziej zagnieżdżone zwroty (bez innych wewnątrz):
Kod {([^{]+?)} Czyli robisz preg_match(), losujesz co wstawić i podmieniasz. Lecisz w pętli aż nic nie znajdze. Ten post edytował vermis 31.12.2013, 12:52:33 -------------------- |
|
|
31.12.2013, 13:29:58
Post
#7
|
|
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ł:
Ten post edytował malvor 31.12.2013, 14:33:01 |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 12:53 |