close

最近在開發CI框架的網站,剛好有用到text輔助函數裡的character_limiter,

可是實做時卻發現無法使用,於是追了一下code

以下為原始code

 



if ( ! function_exists('character_limiter'))
{
function character_limiter($str, $n = 500, $end_char = '…')
{
if (strlen($str) < $n)
{
return $str;
}

$str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str));


if (strlen($str) <= $n)
{
return $str;
}


$out = "";
foreach (explode(' ', trim($str)) as $val)
{
$out .= $val.' ';

if (strlen($out) >= $n)
{
$out = trim($out);
return (strlen($out) == strlen($str)) ? $out : $out.$end_char;
}
}
}
}


發現根本找不到切字的函式

所以就自己修改一下,順便加入網頁編碼以配合我自己的網站XD

參考http://php.net/manual/en/function.mb-strlen.phphttp://php.net/manual/en/function.mb-substr.php

以下為修改後的code

 



if ( ! function_exists('character_limiter'))
{
function character_limiter($str, $n = 500, $end_char = '&#8230;' ,$encoding='utf-8')
{
if (mb_strlen($str,$encoding) < $n)
{
return $str;
}

$str = preg_replace("/\s+/", ' ', str_replace(array("\r\n", "\r", "\n"), ' ', $str));


if (mb_strlen($str,$encoding) <= $n)
{
return $str;
}


$out = "";
foreach (explode(' ', trim($str)) as $val)
{
$out .= $val.' ';

if (mb_strlen($out,$encoding) >= $n)
{
$out = mb_substr($out,0,$n,$encoding);
return (mb_strlen($out,$encoding) == mb_strlen($str,$encoding)) ? $out : $out.$end_char;
}
}
}
}


 

 

修改後總算可以正常使用!!

特此紀錄,以免老人症發作又忘記了 XD



 

arrow
arrow
    全站熱搜

    mofajava 發表在 痞客邦 留言(0) 人氣()