Autor Zpráva
Los
Profil *
Bry ranko,

rad bych si vytahl z clanku prvnich 100 znaku, to by nebyl problem, ale vetsinou obsahuje HTML tagy ( obrazky, ztucneni, odkazy ... ) a nevim jak toho docilit aby mi to treba nejaky parovy tag nejak osklive nerozseklo.


Dik
Joker
Profil
Blbě.
Co značky odstranit?

Nebo jak by ten systém řešil, když udělám třeba:
<div> *text o 300 znacích* </div>

To by leda musel procházet ten HTML kód, a otevřené značky automaticky uzavřít.
gwh
Profil
Radši zapisuj perex zvlášť. Tenhle problém jsem také řešil a imho je stokrát lepší tvořit zvlášť perex a zvlášť článek.
krteczek
Profil
nebo vytahovat perex z článku, ale před zformátováním do html (z článku v Texy! syntaxi například), záleží na konkrétní situaci.
Los
Profil *
No jak to rict, uzivatele do fora a k clankum pisou komentare a maji moznost je obohatit smajliky ci odkazem ci ztucnenim textu ( aka BBCode)


A ja chci udleat perexovy vypis poslednich X komentaru a nechci to ochudit o tagy.

Nekdo kolikrat vlozi do komentare jen smajlika nebo odkaz. A ja to proste chci zobrazovat.

Takze pokud nekdo vi at poradi.
habendorf
Profil
Asi ti nezbude nic jiného, než co říká Joker. Hlídat si tagy a případně je na konci pozavírat.
krteczek
Profil
Navíc nesmíš zapomenout na to, že tag nesmíš utnout někde uprostřed!!!
<tag parametr="neco"> nesmí být urván jinak se ti může stát že zhavaruješ stránku
Joker
Profil
Los
Tak v tom případě asi nezbude, než napsat skript, který ten kód zpracuje.
Udělejte si zásobník značek, při každém otevření značky jí uložte do zásobníku a při uzavření stejné zase odeberte. Zároveň definujte příznak, jestli jste zrovna uvnitř otevřené značky a pokud narazíte na limit počtu znaků uvnitř otevřené značky, musíte text useknout před začátkem té značky.

Příznak otevřené značky je snadný v HTML, všechno mezi < a > je značka. V BBCode je to horší, pokud jako BBCode berete jenom některé značky a všechno ostatní, třeba [nějaký text] zobrazujete normálně jako text. Pak pokud vyjde limit počtu znaků zrovna dovnitř něčeho takového, budete asi muset dojet k nejbližší "]", pak vyhodnotit jestli ten vnitřek dává dohromady značku, pokud ano, useknout to před ní a pokud ne, useknout to uprostřed.
Joker
Profil
Poznámka:
Akorát přístup, že v případě dosažení limitu uvnitř značky se automaticky usekne před začátkem té značky bude mít negativum v tom, že pokud bude příspěvek začínat třeba:
<a href="*velice dlouhý odkaz*">tady</a> se píše, že...
bude perex prázdný řetězec.

Zabránit by se tomu dalo tak, že ten interpreter kódu si bude zároveň ukládat, jak bude vypadat výsledný text a bude počítat useknutí podle výsledného textu a ne podle kódu. Takže pokud budete mít značku pro odkaz třeba [link], tak text [link="http://www.google.com"]google[/link] by se započítával do počtu znaků jenom jako text "google".


Tak, to by snad teoreticky bylo. Ale napsat to nebude tak úplně snadné ;-)
Toto téma je uzamčeno. Odpověď nelze zaslat.