html elemek elrontjá az oldalt ha csak egy bizonoy mennyiségű karaktert iratok ki a tartalomból
Üdv!
Lenne egy problémám:
VAn mondjuk egy cikk ami 5ezer karaktert tartalmaz, a cikkben engedélyezem a html elemeket vagyis kiiratáskor nem használok htmlspecialchars()-t csak nl2br()-t a sortörések miatt semmi bbcode.
De ugye a címlapon kicsit hosszú lenne ez az 5000 karakter ezért megjelenítek csak 150 és kiteszek egsy tovább gombot, ez eddig ok is.
így:
substr($tartalom, 0, 150);
na de mivan akkor ha pont egy <a href=""> elemnél van a 150. karakter és akkor nem zárja le > jellel, és akkor a többi cikk nem látszódik az oldalon, nos ezt megoldottam úgyhogy ilyenkor htmlspecialchars()-t csinálok ez megoldja de hülyén néz ki hogy kiirja hogy: <a href= vagy pedig ha elötte egy link van ugyeakkor azt sem alakítja át linké.
$a = substr($tartalom, 0, 150);
$a = htmlspecialchars($a);
$a = né2br($a);
nos most így iratom ki röviden
Ere mi lehet a megoldás?
Előre is kösszi.
■ Lenne egy problémám:
VAn mondjuk egy cikk ami 5ezer karaktert tartalmaz, a cikkben engedélyezem a html elemeket vagyis kiiratáskor nem használok htmlspecialchars()-t csak nl2br()-t a sortörések miatt semmi bbcode.
De ugye a címlapon kicsit hosszú lenne ez az 5000 karakter ezért megjelenítek csak 150 és kiteszek egsy tovább gombot, ez eddig ok is.
így:
substr($tartalom, 0, 150);
na de mivan akkor ha pont egy <a href=""> elemnél van a 150. karakter és akkor nem zárja le > jellel, és akkor a többi cikk nem látszódik az oldalon, nos ezt megoldottam úgyhogy ilyenkor htmlspecialchars()-t csinálok ez megoldja de hülyén néz ki hogy kiirja hogy: <a href= vagy pedig ha elötte egy link van ugyeakkor azt sem alakítja át linké.
$a = substr($tartalom, 0, 150);
$a = htmlspecialchars($a);
$a = né2br($a);
nos most így iratom ki röviden
Ere mi lehet a megoldás?
Előre is kösszi.
strip_tags
egy variáció
Nagyvonalakban: (ha $s-ben van a szöveg)
honnan tudom hol a mondat vége?
mert pl ha egy képet linkelek
<img src="1.jpg"> akkor van benne egy pont és az strpos()-ban hiába állítok be '.' -t mikor azt hiszi, hogy a kép link közepén van vége a mondatnak vagy íhy használjam: '. ' ?
nods ilyet csináltam
Mert ugye ? ! . ellenorzi hogy a mondat végén van-e de ha sortörés van akkor is ellenőrzi őst ha egyik sincs benne akkor kiirja az egész tartalmat.
A tartalom a $chr változóban van, a $max változóban lehet beállítani azt a számot amenyit kiirjon a bevezetőben.
De itt is van gond, az hogy a tartalomba beleszámolja a sortöréseket, mert ugye az pozicionáslás elött strpos() a tartalmat nl2br() -el átalaktítom, mert ugye így tudom megvuzsgánli azt hogy az írásjel után állhat-e sortörés.
Nos mit szóltok a kódhoz, szerintetek jó, és mi javítani való van rajta?
more komment
kicsit hatékonyabb és elegánsabb, mint a fenti hatalmas kódhalmaz
ő ezt nem nagyon értem
más megközelítés
Te azt szeretnéd, hogy (legalábbis én úgy értelmeztem), hogy egy hosszabb cikk bevezetőjét leválaszd a többi részétől, valamiylen szinten "automatikusan" és azt is írtad, hogy html használata is engedélyezett.
Namost, két megoldás is lehetséges:
az egyik az általad említett hosszú kód, amely megpróbálja kitalálni a mondat végét, figyel a benne lévő img tag-ekre, stb.
A másik megoldás viszont kb 2 sor:
Ahol szeretnéd kettéválasztani a bevezetőt és a tartalmat, oda beteszel egy kommentet, ami az oldalon nem jelenik meg, hanem felbontod a teljes tartalmat ott, ahol a komment van. ( explode erre jó, ha jól emlékszem, minta alapján tömböt épít) és a tömb eéső elemét (ami a bevezető) íratod ki. Mivel ezt a kommentet Te helyezed el, nem kell arra megírni egy script-et, ami figyel az írásjelekre, egyéb tag-ekre, stb.
Úgy emlékszem, hogy a drupal is így csinálja, vagy csinálta valamikor.
Szóval csak egy egyszerűbb megoldás a problémára, jóval kevesebb munkával jár és az eredmény ugyanaz.
értem
De ezzel csak annyi a baj, hogy:
-nem mindenki tudja, hoigy el kell helyezni még ha a beviteli mező alá-elő oda is írnám
- és ha valaki egy 5000 karakterből álló cikket beküld is direkt nem teszi oda
- vagy ha mondjuk 1000 karakter után teszi azt ki
Nos végülis ez is egy szerintem jó megoldás, de ezt majd a saját honlapomon fogom használni.
Kössz a tippet.
szívesen