speciālo simbolu attēlošana izmantojot substr un mb_subst

Moderatori: janis.wd, Vecākie lietotāji

User avatar
mmittz
Reģistrēts lietotājs
Atbildes: 46
Pievienojies: 04 Jūn 2008, 10:41
Reputācija: 0

speciālo simbolu attēlošana izmantojot substr un mb_subst

Post no mmittz » 27 Jūn 2009, 00:07

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

User avatar
Mr.Death
Lietpratējs
Atbildes: 1780
Pievienojies: 17 Apr 2007, 19:13
Reputācija: 0

Post no Mr.Death » 27 Jūn 2009, 00:13

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);
}



un lietošanas piemērs:
$mainigais = _mb_substr($mainigais, 0, 70);

User avatar
mmittz
Reģistrēts lietotājs
Atbildes: 46
Pievienojies: 04 Jūn 2008, 10:41
Reputācija: 0

Post no mmittz » 27 Jūn 2009, 00:23

Super, viss strādā ideāli, tavs paša koda gabals vai no kopēts?

User avatar
Mr.Death
Lietpratējs
Atbildes: 1780
Pievienojies: 17 Apr 2007, 19:13
Reputācija: 0

Post no Mr.Death » 27 Jūn 2009, 00:30

kaut kur laikam sen sen atpakaļ nokopēju no php.net mājas lapas. :) slinkums bija gudrot, kā paša spēkiem novērst to gļuku :D

User avatar
mmittz
Reģistrēts lietotājs
Atbildes: 46
Pievienojies: 04 Jūn 2008, 10:41
Reputācija: 0

Post no mmittz » 27 Jūn 2009, 00:40

baigi vienkārši: mb_internal_encoding("utf8");

User avatar
Mr.Death
Lietpratējs
Atbildes: 1780
Pievienojies: 17 Apr 2007, 19:13
Reputācija: 0

Post no Mr.Death » 27 Jūn 2009, 00:52

tomēr?.... būs kaut kur jāpieskricelē. nezkāpēc man liekas, ka šo variantu jau toreiz biju mēģinājis.

Morpheus

Post no Morpheus » 27 Jūn 2009, 07:45

mmittz wrote:baigi vienkārši: mb_internal_encoding("utf8");
+10

User avatar
M
Reģistrēts lietotājs
Atbildes: 130
Pievienojies: 15 Sep 2008, 13:08
Reputācija: 0

Post no M » 27 Jūn 2009, 11:55

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.

Pievienot atbildi

Return to “Web veidošana un problēmas”