Bevezető szöveg generálása
Nos, van nekem egy tartalomkezelőm, nevezzük sajátnak és van benne több ezer cikk. Szeretnék hozzá mondjuk 500 karakteres bevezetőket generálni. Na most erre kiválóan alkalmas a php substr beépített függvénye, de ha pont oda esik egy html tag, akkor azt is ketté vágja, ami ugye nem jó. Ezt sikerült megoldani egy preg-replace-szel.
A gondom azzal van, hogy ha mondjuk van egy félkövér mondat és a mondat felénél vágja el a substr, akkor a <b> zárótagje is megy a fenébe, amitől az oldalam utána lévő része félkövér lesz. Ezt hogyan lehetne megoldani? Valami olyan megoldásra lenne szükségem, ami a folyamat végén ha kell, lezárja a nyitva maradt tageket.
re: Bevezető szöveg generálása
kis áldozat, de dobj ki minden HTML teget a szövegből, nem kell az a bevezetőbe.
strip_tags();
paraméterezhető, hogy img-t meghagyja pl.
re: Bevezető szöveg generálása
Szavakat számolj, és ne karaktereket. Pontatlanabb, de megoldja elvileg a problémát...
A legegyszerűbb tényleg a html-tagok eldobása a kivonatban.
re: Bevezető szöveg generálása
Szedd ki előtte a tag-eket, egy bevezetőbe úgysem fog hiányozni.
re: Bevezető szöveg generálása
Köszönöm az ötleteket, de jó volna megoldani úgy, hogy a kecske is jól lakjon és a káposzta is megmaradjon.
re: Bevezető szöveg generálása
Idézet:
hetes eredeti hozzászólása
Köszönöm az ötleteket, de jó volna megoldani úgy, hogy a kecske is jól lakjon és a káposzta is megmaradjon.
Én valahogy úgy csinálnám, hogy megszámolnám, hogy hány <*b> , <*strong>, <*i>... (és a többi megengedett tag) kifejezést talál és ha páratlan valamelyik, akkor abból tesz a végére egy lezárást.
vaaagy ez se rossz:
1.) Végigmész karakterenként a bevezető szövegen
2.) Ha talál mondjuk egy "<" karaktert és az ezt követő karakter pl.: "b", akkor a $lezaras['b']="</b>", de megy tovább és ha talál egy "<" amit egy "/" és egy "b" követ, akkor $lezaras['b']=""
3.) Természetesen ezt minden megengedett tag-re figyelni kell, a végére pedig odateszed az összes $lezaras[i],$lezaras[b],$lezaras[strong], stb... Amelyik üres az üres, de ha valamelyik nem volt lezárva azt lezárja. Elvileg ez elkezeli azt is, ha egy <b>szöveg<i>szöveg</i></b> esetén hiányzik csak a </b>, vagy azt is ha mind a két lezáró.
Elsőre ennyi jutott eszembe. Egyik sem a legelegánsabb megoldás, de nem egy egyszerű probléma... :)
re: Bevezető szöveg generálása
Vagy írj egy html validator class-t, ami többek között a hiányzó lezárásokat is automatikusan javítja. Aztán tesztelés után felajánlhatod letöltésre a titokszobában :)
Viccet félretéve: nézz utána egy ilyesmi megoldásnak, gyanítom, hogy létezik letölthető formában...
re: Bevezető szöveg generálása
Idézet:
nemvalid eredeti hozzászólása
Vagy írj egy html validator class-t, ami többek között a hiányzó lezárásokat is automatikusan javítja. Aztán tesztelés után felajánlhatod letöltésre a titokszobában :)
Viccet félretéve: nézz utána egy ilyesmi megoldásnak, gyanítom, hogy létezik letölthető formában...
hxxp://www.bermi.org/projects/xhtml-validator
nem próbáltam, de biztos jól működik, ha nem akkor ezen elindulva hetes már biztosan meg tudja írnia sajátját.
re: Bevezető szöveg generálása
szűrd ki a lezáratlan tageket és dobd el a nyitó taget vagy zárd le.
re: Bevezető szöveg generálása
Hű, tökre elfelejtettem ezt a topikot, most is csak azért lestem be, mert megtetszett a téma neve. Jéé mondom, ez érdekes lehet. :)
Átnéztem a tippeket, ha van tuti megoldásom, majd megosztom itt. Köszönöm az ötleteket.