Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ucinanie do ilus znakow a tagi BBCode
Forum PHP.pl > Forum > PHP
jestemacid
Witam,
Stworzylem sobie nastepujaca funkcje:
  1. <?php
  2. function cutltr($string, $limit)
  3. {
  4. if( strlen($string) > $limit )
  5. {
  6. $limit_str = substr($string, 0, $limit);
  7. $limit_end = explode('.', str_replace($limit_str, '', $string));
  8. $limit_end = $limit_end[0];
  9.  
  10. return $limit_str . $limit_end . '.';
  11. }
  12. else
  13. {
  14. return $string;
  15. }
  16. }
  17. ?>

ktora to ucina mi dany string po pierwszej kropce w momencie osiagniecia danej liczby znakow.
Wszystko sprawowaloby sie swietnie gdyby nie to, ze w tych stringach mam tagi BBCode, ktore nieszczesna funkcja nie traktuje jakos specjalnie stad mam, np.
Cytat
O co tutaj chodzi?

[img:d057a14fb7]http://www.
.
Macie jakis pomysl jak ulepszych skrypt zeby nie ucinal stringu, jezeli wszystkie ropoczete wczesniej tagi nie zostaly zamkniete?
pbnan
Kiedyś myślałem nad podobnym problemem... I doszedłem do wniosku, że tutaj dobrze by było zrobić stos (kolejka LIFO?) i na tym działać. smile.gif
To znaczy - jakiś parser parsuje treść danego wpisu (pod blog z BBCode wykorzystałem ten sposób ) i jeśli znajdzie tag otwierający, to go wrzuca na stos. Jeśli znajdzie zamykający, a tag na wierzchu nie odpowiada tagu właśnie znalezionemu, to jest error. Jeśli za to odpowiada - to są oba wyrzucane ze stosu. I jeśli stos jest pusty, mogę obcinać (to do Twojego problemu).
;-)
PS. Jak nie wiesz, czym jest ten stos, to zobacz w Google. W PHP bardzo łatwo jest go oprogramować.

Pozdrawiam.
jestemacid
A moglbys wrzucic swoje rozwiazanie?
pbnan
Sry za odświeżanie, ale jakby kogoś interesowało to zagadnienie, to może sobie rozwinąć z tego, com naskrobał:
http://pbnan.jogger.pl/2007/05/26/obsluga-...ora-wizualnego/
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.