Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Dynamiczne ucinanie tekstu
Forum PHP.pl > Forum > PHP
demoniczny
Witam!

Mam problem ze stworzeniem funkcji która automatycznie ucinała by tekst...
Jak wiadomo funkcja substr() robi to świetnie ale problem jest gdy w skrypcie jest używane bbcode...
gdybym miał użyć na tekscie przykład:
  1. //nawiasy bo zamienia bbcode na html
  2. $tekst = "[(b)]Ala ma kota[(/b)]"; //11 znaków bez bbcode 18 z bbcode
  3.  
  4. //A mój skrypt ma wyświetlić tylko 11 znaków... normalnie można to zrobić tak...
  5.  
  6. if(strlen($tekst)>11)
  7. {
  8. echo substr($tekst, 0, 11); //Wynikien tego "<b>Ala ma k"
  9. }else{
  10. echo $tekst;
  11. }


Jak widać przykład na górze jest beznadziejny... ja bym chciał aby najpierw zostały wycięte wszystkie znaki bbcode...
Następnie funkcją strlen wyliczenie 11 i dodanie bbcode i zamiana str_replace...

A jeszcze lepiej by było jak by znajdował niedomknięte znaczki czyli Ala ma kota a kot ma Ale (11 znaków to byłby wynik), nawet z rozwiązaniem które przedstawiłem na górze nie będzie to dawało oczekiwanego rezultatu...
Tak więc najlepszym rozwiązaniem by było gdyby uciął Ala ma kota i sam dodał brakujące </b> na końcu...

Zacząłem rozpisywać to sobie wszystko na kartce co bym mógł od czego odciąć wyliczyć itp... itd... ale totalnie się potraciłem dlatego czekam na wskazówki...
CuteOne
Hmmm a nie możesz najpierw potraktować tekst z bbcode funkcją str_replace, który usunie bbcode następnie policzyć znaki i dodać za 11 bbcode? Oczywiście wcześniej zapisz sobie do tablicy wszystkie bbcode, żebyś wiedział jak je odtworzyć.

ps. zobacz też do działu Gotowe rozwiązania ->Klasy i funkcje jest tam gotowa klasa bbcode, może tam znajdziesz rozwiązanie swojego problemu
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.