Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][html]Proste "udawanie" tagów
-Trejder-
post
Post #1





Goście







Witam,

Chcę dodać do swojego skryptu prosty mechanizm obsługi pseudo-tagów, podobnie jak w przypadku BBCode. Zastosowałem jedno z rozwiązań dostępnych w Internecie, ale jego kod jest dla mnie zbyt zagmatwany, żebym umiał rozszerzyć jego funkcjonalność do takiego poziomu, jaki jest mi potrzeby.

W zasadzie to interesuje mnie tylko jedna rzecz - jedna funkcja.

Na wejściu (w tekście wprowadzanym przez użytkownika) jest coś takiego:

Kod
[lbimg]plik_maly|plik_duzy|podpis|orientacja[/lbimg]


Chciałbym, żeby na wyjściu (na wyświetlanej stronie, tudzież w tym, co zwraca funkcja, której poszukuję) powyższy kod został zamieniony na:

  1. <a href="plik_duzy" title="podpis">
  2. <img src="plik_maly" alt=" " align="orientacja"/><br />
  3. podpis
  4. </a>


Ponieważ w moim pseudo-tagu występują parametry, więc sądzę, że zwykła - jednolinijkowa funkcja wykorzystująca wyrażenia regularne tu nie wystarczy. Próbowałem rozwiązać ten problem na wiele sposóbów, ale zawsze bez efektu - to przekracza moją wiedzę.

Być może ktoś z użytkowników będzie wiedział, jak mi pomóc?

Oczywiście to, co jest na wejściu (czyli ów pseudo-tag) może być dowolnie zmodyfikowany. Jeśli miałby to uprościć poszukiwaną przeze mnie funkcję to na przykład może on mieć taką postać:

Kod
[lbimg img_prev="plik_maly" img_main="plik_duzy" title="podpis" align="orientacja"]


Lub dowolną inną. Wszystko, czego do szczęścia potrzebuję to możliwość przekazania tych czterech parametrów dla każdego obrazka i następnie przetworzenie tego do pokazanego powyżej ciągu tagów HTML.

Z góry dziękuję za wszelką pomoc,
Trejder
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
-Trejder-
post
Post #2





Goście







Witam,

Dzięki bardzo. Podany przez Ciebie kod działa świetnie. Niestety nie znam się kompletnie na wyrażeniach regularnych, dlatego nie miałbym najmniejszych szans na rozwiązanie tego samemu! (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ale... (ja zawsze mam jakieś ale! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ... w między czasie zostałem zmuszony do zmiany konceptu. Wypadł ostatni parametr (decydujący o orientacji obrazka - align), a w to miejsce pojawiły się trzy osobne pseudo-tagi. Każdy z nich pokazuje obrazek w odpowiedniej orientacji (centralnie - [lbimg], do lewej - [lbimgl] i do prawej - [lbimgr]). Mamy więc na wejściu:

Kod
[lbimg]plik_maly|plik_duzy|podpis[/lbimg]
[lbimgl]plik_maly|plik_duzy|podpis[/lbimgl]
[lbimgr]plik_maly|plik_duzy|podpis[/lbimgr]


Wziąłem Twoją linijkę:
  1. <?php
  2. $tresc = preg_replace('#[lbimg](.*?)|(.*?)|(.*?)|(.*?)[/lbimg]#si', $out, $in);
  3. ?>


i rozbudowałem ją do takiej postaci, jak mi się wydawało sensownej:

  1. <?php
  2. $tresc = preg_replace('#[lbimg](.*?)|(.*?)|(.*?)[/lbimg]#si', $out_lbimg, $in);
  3. $tresc = preg_replace('#[lbimgl](.*?)|(.*?)|(.*?)[/lbimgl]#si', $out_lbimgl, $in);
  4. $tresc = preg_replace('#[lbimgr](.*?)|(.*?)|(.*?)[/lbimgr]#si', $out_lbimgr, $in);
  5. ?>


Oczywiście zmienne $out_lbimg, $out_lbimgl i $out_lbimgr zawierają odpowiedni pattern, czyli co ma być na wyjściu dla danego pseudo-taga.

I tu zaczynają się schody. Sam nie wiem, czemu działa mi za każdym razem tylko jedna linijka. Gdy była tylko ta pierwsza - zamieniał mi pseudo-tagi wstawiające obrazki centralnie. Potem dopisałem tę drugą i zaczął prawidłowo zamieniać mi tagi [lbimgl], ale przestał [lbimg]. I tak w kółko - za każdym razem zamieniany jest tylko jeden rodzaj tagów.

Co robię źle?

Pozdrowienia,
Trejder
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: 6.10.2025 - 10:36