![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 2 Dołączył: 13.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem ze skróceniem tekstu pobieranego z bazy danych. Nie wiem czemu jak pojawiają się tagi html m.in <ul>. <li> itd. to funkcja odpowiedzialna za skracanie tekstu nie działa. O to funk:
Funkcja działa poprawnie tylko do momentu zakończenia pierwszego zdania. Później jak natrafi na <ul> wariuje i wyświetla wszystko do końca. Czy ktoś zna rozwiązanie? thx |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jak użyjesz tej funkcji, to zostanie Ci coś w stylu:
Zostaną niedomknięte tagi i wszystko się posypie. Zrób
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 2 Dołączył: 13.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
sęk w tym że ja nie chce usunąć tych znaczników, ponieważ tekst musi ładować się w odpowiedniej formie, czyli z wypunktowaniem itd.
jak użyje strip_tags to usuwa mi wszystko i zostaje tylko ciąg znaków.... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 850 Pomógł: 120 Dołączył: 15.02.2007 Skąd: Łódź Ostrzeżenie: (10%) ![]() ![]() |
on ale skoro chcesz skrócony teks to po co go ładowac ze wszystkim?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No to jedynym rozwiązaniem jest podomykanie otwartych tagów. Masz obcięty tekst i idąc od początku zbierasz otwarte tagi (robisz sobie kolejkę lifo). Napotykając tagi zamykające zbierasz ze stosu po kolei tagi otwierające. Jak już dojdziesz do końca tekstu to zdejmujesz ze stosu pozostałe tagi dopisując ich zamknięcia.
Musisz przy tym pamiętać o takich tagach jak <br />, <img />, które nie mają domknięcia. Problemem może być też np. taka sytuacja: Ale to już pozostawiam do pogłówkowania (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 2 Dołączył: 13.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
powiem Ci, że teraz to dorzuciłeś do pieca;-) , nie wiem jak za to się cholera zabrać....
Wiem jakie mogą występować tam znaczniki: <ul> <li> <p> <u> i zamknięcia do nich. innych nie będzie... |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
- z manuala z tego co pamiętam. |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Chodzisz po kodzie pregiem, który liczy tagi. Otwarcie -> licznik tagu +1, zamknięcie -> -1. I jeśli osiągnie koniec, liczysz, który licznik jest >0 - wówczas dopisujesz odpowiednie zamknięcia wg kolejności wystąpień.
A najlepiej zrób tak, jak jest w innych CMS-ach - osobne pole na zajawkę i osobne na resztę treści. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 2 Dołączył: 13.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pilsner powiem szczerze, że u mnie ta funkcja nie działa, albo bynajmniej nie wiem jak z niej skorzystać.
Możesz podać przykład wywołania tej funkcji ? rozumiem, że mam ją wywować tak : echo skracaj_text($tresc); (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) pozdro |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Acha, sorry - źle zrozumiałem problem. Myślałem, że ucina Tobie w środku słów i tagów, a Tobie chodzi po prostu o podomykanie wszystkich tagów?
Ciężka sprawa, bo jeśli wchodzą w grę wszystkie tagi, to skąd ma być wiadomo, jakie jest ich poprawne zamknięcie? Jak masz jakieś tabele + divy + nie wiadomo co jeszcze - niewykonalne. Co się nasuwa: 1. Tekst trzymany w bazie bez tagów html, formatujemy dopiero przy wyświetlaniu (bbcode) 2. Wyświetlany fragment dokumentu HTML oczyszczony z tagów HTML 3. Dzielenie tekstu tylko po niektórych tagach (np. <p>) 4. Wstawienie specjalnego znaku podziału i dzielenie ręczne (np. wstawiamy {podzial} i od tego miejsca tekst nie będzie wyświetlany w formie skróconej) W sumie nie napisałeś, do czego jest Ci to potrzebne - można się pokusić o jakiś kombajn do domykania tagów ale pewnie będzie to zżerało niemało zasobów, moim zdaniem nie tędy droga. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 04:26 |