Php UTF-8兼容截断函数
有人遇到过这个复杂拉丁字符的问题,比如越南语Php UTF-8兼容截断函数,php,mysql,utf-8,Php,Mysql,Utf 8,有人遇到过这个复杂拉丁字符的问题,比如越南语 函数truncate($str,$length,$append='…')){ $strLength=mbstrleng($str); 如果($strLength您可以使用(PHP文档): 或自定义函数,如: 确保执行必要的Unicode规范化,以确保每个字符对应于单个代码点 mb_internal_encoding()是否返回您正在使用的字符集?echo mb_strimwidth(“Hello World”,0,10,“…”,“UTF-8”);
函数truncate($str,$length,$append='…')){
$strLength=mbstrleng($str);
如果($strLength您可以使用(PHP文档):
或自定义函数,如:
确保执行必要的Unicode规范化,以确保每个字符对应于单个代码点
mb_internal_encoding()是否返回您正在使用的字符集?echo mb_strimwidth(“Hello World”,0,10,“…”,“UTF-8”);
但是有效。无论我做什么,我似乎都无法将默认字符集设置为UTF-8!不过,谢谢:)@RVWard无法赢得全部!如果指定字符集,至少它对您有效:)
function truncate($str, $length, $append = '…') {
$strLength = mb_strlen($str);
if ($strLength <= $length) {
return $str;
}
return mb_substr($str, 0, $length) . $append;
}
echo truncate('Bà Rịa - Vũng Tàu!', 14);
echo mb_strimwidth("Hello World", 0, 10, "...");
mb_truncate($string, $length = 80, $etc = '...', $charset='UTF-8',
$break_words = false, $middle = false)
{
if ($length == 0)
return '';
if (strlen($string) > $length) {
$length -= min($length, strlen($etc));
if (!$break_words && !$middle) {
$string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1, $charset));
}
if(!$middle) {
return mb_substr($string, 0, $length, $charset) . $etc;
} else {
return mb_substr($string, 0, $length/2, $charset) . $etc . mb_substr($string, -$length/2, $charset);
}
} else {
return $string;
}
}