/**
* UTF-8数据的中文截字
*
* @param string or array $content 需要截字的原文
* @param array $length 截取的长度
* @param string $add 末尾添加的字符串
* @param string $index 处理数组索引
* @return string or array
*/
function cn_substr(&$content, $length = array(), $add = '', $index = '')
{
if(is_array($content) && $content && $index)
{
foreach($content as $key => &$values)
{
if(isset($length[1]) && $key)
{
$values[$index] = cn_substr($values[$index], array($length[1]),$add);
continue;
}
$values[$index] = cn_substr($values[$index], array($length[0]),$add);
}
return $content;
}
$hex = '';
if ($length && strlen($content) > $length[0])
{
$str = substr($content, 0, $length[0]);
$len = strlen($str);
for ($i = strlen($str) - 1; $i >= 0; $i-=1)
{
$hex .= ' ' . ord($str[$i]);
$ch = ord($str[$i]);
if (($ch & 128) == 0)
return substr($str, 0, $i) . $add;
if (($ch & 192) == 192)
return substr($str, 0, $i) . $add;
}
return($str . $hex . $add);
}
return $content;
}
* UTF-8数据的中文截字
*
* @param string or array $content 需要截字的原文
* @param array $length 截取的长度
* @param string $add 末尾添加的字符串
* @param string $index 处理数组索引
* @return string or array
*/
function cn_substr(&$content, $length = array(), $add = '', $index = '')
{
if(is_array($content) && $content && $index)
{
foreach($content as $key => &$values)
{
if(isset($length[1]) && $key)
{
$values[$index] = cn_substr($values[$index], array($length[1]),$add);
continue;
}
$values[$index] = cn_substr($values[$index], array($length[0]),$add);
}
return $content;
}
$hex = '';
if ($length && strlen($content) > $length[0])
{
$str = substr($content, 0, $length[0]);
$len = strlen($str);
for ($i = strlen($str) - 1; $i >= 0; $i-=1)
{
$hex .= ' ' . ord($str[$i]);
$ch = ord($str[$i]);
if (($ch & 128) == 0)
return substr($str, 0, $i) . $add;
if (($ch & 192) == 192)
return substr($str, 0, $i) . $add;
}
return($str . $hex . $add);
}
return $content;
}