Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyciąganie konkretnej frazy z tekstu i zastępowanie jej.
bielu000
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.04.2011

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


Cześć, natrafiłem na tego typu problem. Pisze sobie na własne potrzeby (w ramach ćwiczeń) prosty system CMS. Powiedzmy, że użytkownik może stworzyć sobie za pomocą tego systemu, galerię zdjęć, którą będzie mógł później umieścić w dowolnym miejscu strony umieszczając w tekście specjalnie wygenerowany dla danej galerii kod typu {{gallery}}. Samo wyodrębnienie tego znacznika z tekstu przed wyświetleniem nie jest problemem. Powiedzmy, jest to na zasadzie - funkcja przeszukuje tekst, po znalezieniu konkretnego znacznika, wywołuje odpowiednią funkcję, która zmienia przykładowe {{gallery}} na coś innego i robi to do skutku, aż wszystkie elementy zostaną podmienione. O ile podmiana znacznika, na jakiś tekst nie jest problemem, o tyle, nie mam pomysłu na aby w miejscu gdzie on się znajduje w tekście została wczytana dana galeria zdjęć.

Zastanawiam się też nad samym skryptem przeszukiwania zmiennej $text na zawartość tych specjalnych znaczników. Na chwilę obecną działa to na zasadzie, że mam pewną tablicę, w której przechowuje frazy, które mają być zamienione na inne, jeśli pojawią się w tekście. Czyli odpala się pętelka, porównuje zawartość zmiennej tekst, na obecność pierwszego elementu, później na zawartość drugiego elementu itd. Na chwilę obecną jest to ok, natomiast przypuszczam, że gdyby projekt był bardziej rozbudowany to rozwiązanie by się nie spisało gdyż wydajnościowo zapewne nie powala.
Go to the top of the page
+Quote Post
kayman
post
Post #2





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


http://php.net/manual/pl/function.str-replace.php
http://php.net/manual/pl/function.preg-replace.php
Go to the top of the page
+Quote Post
bielu000
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.04.2011

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


Znam te funkcje. Tak jak napisałem zamianę słów kluczowych na jakieś inne potrafię zrobić. Nie wiem natomiast jak zrobić, aby do zmiennej $text czyli jakby tej przechowującej treść, zapisać, jakby ścieżkę to skryptu galerii" który wykona się po wyświetleniu $text, zastępując "słowa kluczowe" skryptami galerii.

Przykładowy tekst:

To jest przykładowy tekst {{gallery}}, w środku tekstu wyświetla się galeria.

Po przetworzeniu:
"To jest przykładowy tekst <w tym miejscu wyświetla się galeria>, w środku tekstu wyświetla się galeria [..]"

Coś w tym stylu.
Go to the top of the page
+Quote Post
kayman
post
Post #4





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


zapoznaj sie z systemem szablonów -> http://twig.sensiolabs.org/

po co wynajdować koło na nowo
Go to the top of the page
+Quote Post
bielu000
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.04.2011

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


Idąc tym tokiem rozumowania, w zasadzie można by tylko z gotowców korzystać. Napisałem wyraźnie, że to dla ćwiczeń.

Ale mimo wszystko dzięki za pomoc.
Go to the top of the page
+Quote Post
kayman
post
Post #6





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


nic nie stoi na przeszkodzie go pobrać i zobaczyć jak oni sobie poradzili z twoim problemem szczególnie że {{znacznik}} jest taki ja u ciebie
Go to the top of the page
+Quote Post
bielu000
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 3.04.2011

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


Jasne, przez czytanie czyjegoś działającego kodu, można się dużo rzeczy dowiedzieć.

Natomiast znalazłem coś o ob_start()

Z tego co się zdążyłem zorientować, buforuje dane wyjściowe, a dzięki temu wyświetli je dopiero kiedy sobie tego zażyczę. Po szybkim przetestowaniu działa. Co o tym sądzicie? Ma to swoje jakieś większe wady lub coś w tym stylu?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 12:09