ugrás a tartalomhoz

HTML tag lezárásának vizsgálata

miki999 · 2012. Szep. 5. (Sze), 19.15
Üdv!

Nos az lenne a problémám, hogy egy blogszerű oldalon a hosszú bejegyzéseket szeretném lerövidíteni és egy egyszerű "tovább" linkkel megjeleníteni a teljes bejegyzést...

nomármost ezt sikerült is úgy, ahogy megcsinálni... egyszerűen js-el módosítottam az adott html tag innerHTML-jét...
mivel a bejegyzések egy sql táblából töltődnek be és phpvel rövidítem le őket(simán ha 500 karakternél hosszabb, akkor csak az első 500-at írom ki és rögtön utána oda rakom a linket, h "... tovább-->"), ezért nem lehet tudni, hogy pontosan hol fogja levágni a bejegyzés végét.. konkrétan a probléma ott van, hogy a bejegyzések tartalmaznak html tageket és ha pont kettévág mondjuk egy táblázatot, akkor teljesen összekuszálódik az oldal..

az első gondolatom az volt, hogy vhogy detektálni kéne a lezáratlan tageket és egyszerűen lezárnám őket még mikor phpvel megcsinálom a lerövidítést.. és hát itt akadtam meg, mert nemakarom egyesével leellenőrizni, az összes taget, hogy benne van-e a bejegyzésben és ha benne van, vajon le van-e zárva az első 500 karakteren belül..

remélem tud valaki segíteni.. természetesen más megközelítést is szívesen látok...

a kódok:

js:
function kibont() {
document.getElementById('H1').innerHTML = 'a bejegyzés teljes tartalma' + '<a href=javascript:becsuk); > <--becsuk</a>';
}
function becsuk() {
document.getElementById('H1').innerHTML = 'a bejegyzés rövidítettje' + '<a href=javascript:kibont(); > tovább--></a>';
}

Html:
<font face="Comic Sans MS" style="font-size: 11pt" id="H1">
"a bejegyzés rövid tartalma"
<a href='javascript:kibont();'> tovább--></a>
</font>

php:
if(strlen($teljesbejegyzes)>500) {
$roviditettbejegyzes = substr($teljesbejegyzes,0,500) . "...";
} else
$roviditettbejegyzes = $teljesbejegyzes;
 
1

Okosan

Poetro · 2012. Szep. 5. (Sze), 21.21
Az elválasztást ennél okosabban kell megcsinálni. A PHP oldalon eleve nem szabad csak úgy elvágni, mert a tartalom nagyon csúnyán elromolhat. Azt tudom, hogy például a Drupal-ban van erre egy nagyszerű függvény a text_summary, de gondolom más PHP keretrendszerben is van ilyen.

Ha csak JavaScript oldalon akarod eltörni, arra pedig írtam egy kisebb jQuery plugint, valamint az egyik budapest.js keretein belül tartottam belőle egy előadást.
2

Szerver oldalon

Pepita · 2012. Szep. 7. (P), 16.08
Ha szerver oldalon "vágsz", akkor ott pótold a tag-eket is! Esetleg nézd meg, hogy rövidítettem RSS-ből származó HTML-t. Ez egyszerű megoldás.