Vágott szöveg utolsó betüje egy kérdőjel

Helló











A problémám a következő. A cikkek bevezetője méretre van vágva. Értendő ezalatt, hogy csak egy adott karakter látszódik. Viszont ha az elválasztásnál ékezetes karakter található, akkor egy kérdőjel jelenik meg helyette? Hol keressem a hibát?

Egyik sablonfájlod nem jó kódolású. Nézd át őket legyen mindegyik utf8 bom nélküli.

Lehet, hogy nem az a gond :slight_smile:











Hanem, ha ékezetes a szöveged, és UTF-8 kódolású, akkor egy ékezetes karakter nem 1 byte helyet foglal, hanem 2-3-at, így a substr, és hasonló szöveg manipuláló parancsok nem működnek rendesen (a tökéletes utf8 támogatást PHP6-ra igérik)











Amit tehetsz, hogy megvizsgálod/megkérdezed a szerver üzemeltetőjét, hogy van-e multibyte támogatás a rendszerben.











Amennyiben rendelkezésre áll, akkor a sablon kódjában át kell cserélni






    [*]a "substr" függvény hívásokat "mb_substr"-re

    [*]az "strpos" függvény hívásokat "mb_strpos"-ra

    [*]at "strlen" függvény hívásokat "mb_strlen"-re

    [/list]






    További multibyte függvény nevek itt

a legegyszerűbb, ha nem karakterekre vágod meg a bevezetőket, hanem szavakra! :wink:

Valóban szavakra vágva lenne jó, csak az a bibi, hogy nem tudom hogyan csináljam meg.


Code:

$szavak = explode(" ",get_the_excerpt());

Beraksz egy ilyet a functions.php-ba:



Code:

function excerpt($limit) {

$excerpt = explode(' ', get_the_excerpt(), $limit);

if (count($excerpt)>=$limit) {

array_pop($excerpt);

$excerpt = implode(" ",$excerpt).'...';

} else {

$excerpt = implode(" ",$excerpt);

}

$excerpt = preg_replace('`^*]`','',$excerpt);

return $excerpt;

}



function content($limit) {

$content = explode(' ', get_the_content(), $limit);

if (count($content)>=$limit) {

array_pop($content);

$content = implode(" ",$content).'...';

} else {

$content = implode(" ",$content);

}

$content = preg_replace('/[.+]/','', $content);

$content = apply_filters('the_content', $content);

$content = str_replace(']]>', ']]>', $content);

return $content;

}





Aztán meghívod a használat helyén így:

Code:






ahol xx persze a szavak számát jelenti.





Legalábbis én ezt használom az egyik oldalamon. Valahol a neten találtam a tutorialt. Nem egy mai kódrészlet, de nekem tökéletesen működik a 3.0.1-el, és sztem elég egyszerű is.


Lehet, hogy van ennél elegánsabb megoldás is, meg gondolom pluginok is, de annyira ez sem bonyolult. :)

a harmadik megoldás, hogy rákeresel itt a fórumban, mert volt róla szó többször is… :unsure: