if (strlen($komentars)<=23)
{
$komentars1=$komentars;
}
else{
$komentars1 = substr($komentars,0,23);
$komentars1.='..';
izmantojot mb_substr problēma saglabājas
lapas kods darbojas, bet ja 23 zīme ir speciāls simbols piemēram ēāšķļīņč u.c tad tie attēlojas kā šai pārējā daļā viss ir normāli, kā to novērst
speciālo simbolu attēlošana izmantojot substr un mb_subst
Moderatori: janis.wd, Vecākie lietotāji
un lietošanas piemērs:define('ENABLE_UTF8_NOMB',true);
define('ENABLE_UTF8_MB',false);
function _mb_strlen($s) {
if(ENABLE_UTF8_MB) {
return mb_strlen($s);
}
if(ENABLE_UTF8_NOMB) {
return strlen(utf8_decode($s));
}
return strlen($s);
}
function _mb_substr($s,$b,$l=NULL) {
/* UTF8 ready */
if(ENABLE_UTF8_MB) {
return is_null($l) ? mb_substr($s,$b) : mb_substr($s,$b,$l);
}
/* UTF8 ready */
if(ENABLE_UTF8_NOMB) {
if($b <0 ) {
$b = _mb_strlen($s) + (int) $b;
}
if( is_null($l) || _mb_strlen($s)<($l+$b)) {
$l = '*';
} else {
if($l <0 )
$l = _mb_strlen($s) + (int) $l;
$l = '{0,'.preg_quote($l).'}';
}
preg_match('/^.{'.preg_quote($b).'}(.'.$l.')/us', $s, $m);
return ( isset($m[1]) ) ? $m[1] : false;
}
return ( is_null($l) ) ? substr($s,$b) : substr($s,$b,$l);
}
$mainigais = _mb_substr($mainigais, 0, 70);
Principā jau atbildi šeit pateica, tika gribeju piebilst, ka visādu ievadtekstu u.tml. apgraizīšanai manuprāt labāk izmantot kaut ko līdzīgu šim, protams, pielabojot pēc savām vajadzībām - http://blocins.lv/files/textlimit.phps Iespējams var atrast arī kādus vienkārsākus/labākus/efektīvākus variantus.
Tādejādi vārdi netiek aprauti pusē, un, ja teksts ir garāks par limitu, var pielikt galā daudzpunkti vai kādu citu simbolu, kā arī nav jāuztraucās par speciālajiem simboliem, nenoslēgtiem tagiem u.tml.
Tādejādi vārdi netiek aprauti pusē, un, ja teksts ir garāks par limitu, var pielikt galā daudzpunkti vai kādu citu simbolu, kā arī nav jāuztraucās par speciālajiem simboliem, nenoslēgtiem tagiem u.tml.