很多朋友直接使用php substr函數截取中文是會出現亂碼,下面我先來給各位總結中文字符截取的函數,然后以wordpress截取中文標題為例給大家介紹實例應用.
中文截取函數,代碼如下:
- function utf8_trim($str)
- {
- $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));
- if (($ch & 192)==192) return(substr($str,0,$i));
- }
- return($str.$hex);
- }
- function mul_excerpt ($excerpt,$excerpt_length) {
- $myexcerpt = substr($excerpt,0,$excerpt_length);
- return utf8_trim($myexcerpt) . ‘… ‘;
- }
或者這樣也可以
- //自動截斷不亂碼
- // jieduan luanma
- /////////////////
- function Limit_Char($max_char = 200, $more_text = '...', $more_link_text = '', $limit_type = 'content') {
- if ($limit_type == 'title') { $limiter = get_the_title(); }
- else { $limiter = get_the_content(); }
- $limiter = apply_filters('the_content', $limiter);
- $limiter = strip_tags(str_replace(']]>', ']]>', $limiter));
- if (strlen($limiter) > $max_char) {
- $limiter = substr($limiter, 0, $max_char+1);
- $limiter = utf8_conver($limiter);
- echo $limiter;
- echo $more_text;
- if ($more_link_text != '') {
- echo ' '.$more_link_text.'';
- }
- } else {
- echo $limiter;
- }
- }
- function utf8_conver($str) {
- $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));
- if (($ch & 192)==192) return(substr($str,0,$i));
- }
- return($str.$hex);
- }
截取中文標題,代碼如下:
echo '</p><p>'. mb_substr(get_the_title(),0,18,"utf8")."..." .'</p></li>';
這樣會出現亂碼的,我在functions.php加入上面的中文截取代碼,然后在想要截取標題的位置,添加get_short_title(),目的就達到,詳細代碼如下:
- echo '<li><a href="' . get_permalink() . '">';
- get_short_title(18);
- echo '</a><data>'. get_the_time('n月j日') .'</data></li>';
當然,其他地方這樣調用也可以,代碼如下:<?php get_short_title(); ?>
新聞熱點
疑難解答
圖片精選