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:10:41 / 4. Jūn, 2008
Reputācija:0
speciālo simbolu attēlošana izmantojot substr un mb_subst

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

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:19:13 / 17. Apr, 2007
Reputācija:0

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

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:10:41 / 4. Jūn, 2008
Reputācija:0

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

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

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

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

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:10:41 / 4. Jūn, 2008
Reputācija:0

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

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

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

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

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 » 07:45 / 27. Jūn, 2009

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

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

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

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 - https://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”